diff --git a/.github/labeler.yml b/.github/labeler.yml index 2743104f410e..d0aa61c8cfc0 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -21,7 +21,6 @@ - '!data/**' - '!.run/**' - '!.github/**' - - '!worlds_disabled/**' - '!worlds/**' - '!WebHost.py' - '!WebHostLib/**' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6b80965f0ac..07ae1136fc01 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: shell: bash run: | cd build/exe* - cp Players/Templates/Clique.yaml Players/ + cp Players/Templates/VVVVVV.yaml Players/ timeout 30 ./ArchipelagoGenerate - name: Store 7z uses: actions/upload-artifact@v4 @@ -189,7 +189,7 @@ jobs: shell: bash run: | cd build/exe* - cp Players/Templates/Clique.yaml Players/ + cp Players/Templates/VVVVVV.yaml Players/ timeout 30 ./ArchipelagoGenerate - name: Store AppImage uses: actions/upload-artifact@v4 diff --git a/.github/workflows/label-pull-requests.yml b/.github/workflows/label-pull-requests.yml index bc0f6999b6a8..4a7d4034590a 100644 --- a/.github/workflows/label-pull-requests.yml +++ b/.github/workflows/label-pull-requests.yml @@ -6,6 +6,8 @@ on: permissions: contents: read pull-requests: write +env: + GH_REPO: ${{ github.repository }} jobs: labeler: diff --git a/.gitignore b/.gitignore index f50fc17e23c6..3bb4e68c9924 100644 --- a/.gitignore +++ b/.gitignore @@ -56,7 +56,6 @@ success.txt output/ Output Logs/ /factorio/ -/Minecraft Forge Server/ /WebHostLib/static/generated /freeze_requirements.txt /Archipelago.zip @@ -184,12 +183,6 @@ _speedups.c _speedups.cpp _speedups.html -# minecraft server stuff -jdk*/ -minecraft*/ -minecraft_versions.json -!worlds/minecraft/ - # pyenv .python-version diff --git a/AHITClient.py b/AHITClient.py index 6ed7d7b49d48..edcbbd842e56 100644 --- a/AHITClient.py +++ b/AHITClient.py @@ -1,3 +1,4 @@ +import sys from worlds.ahit.Client import launch import Utils import ModuleUpdate @@ -5,4 +6,4 @@ if __name__ == "__main__": Utils.init_logging("AHITClient", exception_logger="Client") - launch() + launch(*sys.argv[1:]) diff --git a/AdventureClient.py b/AdventureClient.py index 91567fc0a0e9..a4839c902dd0 100644 --- a/AdventureClient.py +++ b/AdventureClient.py @@ -11,6 +11,7 @@ import Utils +from settings import get_settings from NetUtils import ClientStatus from Utils import async_start from CommonClient import CommonContext, server_loop, gui_enabled, ClientCommandProcessor, logger, \ @@ -80,8 +81,8 @@ def __init__(self, server_address, password): self.local_item_locations = {} self.dragon_speed_info = {} - options = Utils.get_settings() - self.display_msgs = options["adventure_options"]["display_msgs"] + options = get_settings().adventure_options + self.display_msgs = options.display_msgs async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: @@ -102,7 +103,7 @@ def _set_message(self, msg: str, msg_id: int): def on_package(self, cmd: str, args: dict): if cmd == 'Connected': self.locations_array = None - if Utils.get_settings()["adventure_options"].get("death_link", False): + if get_settings().adventure_options.as_dict().get("death_link", False): self.set_deathlink = True async_start(self.get_freeincarnates_used()) elif cmd == "RoomInfo": @@ -415,8 +416,9 @@ async def atari_sync_task(ctx: AdventureContext): async def run_game(romfile): - auto_start = Utils.get_settings()["adventure_options"].get("rom_start", True) - rom_args = Utils.get_settings()["adventure_options"].get("rom_args") + options = get_settings().adventure_options + auto_start = options.rom_start + rom_args = options.rom_args if auto_start is True: import webbrowser webbrowser.open(romfile) diff --git a/BaseClasses.py b/BaseClasses.py index e59e96e17d1c..dbcd65ab55fa 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -9,8 +9,9 @@ from collections import Counter, deque from collections.abc import Collection, MutableSequence from enum import IntEnum, IntFlag -from typing import (AbstractSet, Any, Callable, ClassVar, Dict, Iterable, Iterator, List, Mapping, NamedTuple, +from typing import (AbstractSet, Any, Callable, ClassVar, Dict, Iterable, Iterator, List, Literal, Mapping, NamedTuple, Optional, Protocol, Set, Tuple, Union, TYPE_CHECKING) +import dataclasses from typing_extensions import NotRequired, TypedDict @@ -54,12 +55,21 @@ class HasNameAndPlayer(Protocol): player: int +@dataclasses.dataclass +class PlandoItemBlock: + player: int + from_pool: bool + force: bool | Literal["silent"] + worlds: set[int] = dataclasses.field(default_factory=set) + items: list[str] = dataclasses.field(default_factory=list) + locations: list[str] = dataclasses.field(default_factory=list) + resolved_locations: list[Location] = dataclasses.field(default_factory=list) + count: dict[str, int] = dataclasses.field(default_factory=dict) + + class MultiWorld(): debug_types = False player_name: Dict[int, str] - plando_texts: List[Dict[str, str]] - plando_items: List[List[Dict[str, Any]]] - plando_connections: List worlds: Dict[int, "AutoWorld.World"] groups: Dict[int, Group] regions: RegionManager @@ -83,6 +93,8 @@ class MultiWorld(): start_location_hints: Dict[int, Options.StartLocationHints] item_links: Dict[int, Options.ItemLinks] + plando_item_blocks: Dict[int, List[PlandoItemBlock]] + game: Dict[int, str] random: random.Random @@ -160,13 +172,12 @@ def __init__(self, players: int): self.local_early_items = {player: {} for player in self.player_ids} self.indirect_connections = {} self.start_inventory_from_pool: Dict[int, Options.StartInventoryPool] = {} + self.plando_item_blocks = {} for player in range(1, players + 1): def set_player_attr(attr: str, val) -> None: self.__dict__.setdefault(attr, {})[player] = val - set_player_attr('plando_items', []) - set_player_attr('plando_texts', {}) - set_player_attr('plando_connections', []) + set_player_attr('plando_item_blocks', []) set_player_attr('game', "Archipelago") set_player_attr('completion_condition', lambda state: True) self.worlds = {} @@ -427,7 +438,8 @@ def get_entrance(self, entrance_name: str, player: int) -> Entrance: def get_location(self, location_name: str, player: int) -> Location: return self.regions.location_cache[player][location_name] - def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False) -> CollectionState: + def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False, + collect_pre_fill_items: bool = True, perform_sweep: bool = True) -> CollectionState: cached = getattr(self, "_all_state", None) if use_cache and cached: return cached.copy() @@ -436,11 +448,13 @@ def get_all_state(self, use_cache: bool, allow_partial_entrances: bool = False) for item in self.itempool: self.worlds[item.player].collect(ret, item) - for player in self.player_ids: - subworld = self.worlds[player] - for item in subworld.get_pre_fill_items(): - subworld.collect(ret, item) - ret.sweep_for_advancements() + if collect_pre_fill_items: + for player in self.player_ids: + subworld = self.worlds[player] + for item in subworld.get_pre_fill_items(): + subworld.collect(ret, item) + if perform_sweep: + ret.sweep_for_advancements() if use_cache: self._all_state = ret @@ -545,7 +559,9 @@ def has_beaten_game(self, state: CollectionState, player: Optional[int] = None) else: return all((self.has_beaten_game(state, p) for p in range(1, self.players + 1))) - def can_beat_game(self, starting_state: Optional[CollectionState] = None) -> bool: + def can_beat_game(self, + starting_state: Optional[CollectionState] = None, + locations: Optional[Iterable[Location]] = None) -> bool: if starting_state: if self.has_beaten_game(starting_state): return True @@ -554,7 +570,9 @@ def can_beat_game(self, starting_state: Optional[CollectionState] = None) -> boo state = CollectionState(self) if self.has_beaten_game(state): return True - prog_locations = {location for location in self.get_locations() if location.item + + base_locations = self.get_locations() if locations is None else locations + prog_locations = {location for location in base_locations if location.item and location.item.advancement and location not in state.locations_checked} while prog_locations: @@ -723,6 +741,7 @@ class CollectionState(): additional_copy_functions: List[Callable[[CollectionState, CollectionState], CollectionState]] = [] def __init__(self, parent: MultiWorld, allow_partial_entrances: bool = False): + assert parent.worlds, "CollectionState created without worlds initialized in parent" self.prog_items = {player: Counter() for player in parent.get_all_ids()} self.multiworld = parent self.reachable_regions = {player: set() for player in parent.get_all_ids()} @@ -999,6 +1018,17 @@ def collect(self, item: Item, prevent_sweep: bool = False, location: Optional[Lo return changed + def add_item(self, item: str, player: int, count: int = 1) -> None: + """ + Adds the item to state. + + :param item: The item to be added. + :param player: The player the item is for. + :param count: How many of the item to add. + """ + assert count > 0 + self.prog_items[player][item] += count + def remove(self, item: Item): changed = self.multiworld.worlds[item.player].remove(self, item) if changed: @@ -1007,6 +1037,33 @@ def remove(self, item: Item): self.blocked_connections[item.player] = set() self.stale[item.player] = True + def remove_item(self, item: str, player: int, count: int = 1) -> None: + """ + Removes the item from state. + + :param item: The item to be removed. + :param player: The player the item is for. + :param count: How many of the item to remove. + """ + assert count > 0 + self.prog_items[player][item] -= count + if self.prog_items[player][item] < 1: + del (self.prog_items[player][item]) + + def set_item(self, item: str, player: int, count: int) -> None: + """ + Sets the item in state equal to the provided count. + + :param item: The item to modify. + :param player: The player the item is for. + :param count: How many of the item to now have. + """ + assert count >= 0 + if count == 0: + del (self.prog_items[player][item]) + else: + self.prog_items[player][item] = count + class EntranceType(IntEnum): ONE_WAY = 1 @@ -1280,8 +1337,8 @@ def add_exits(self, exits: Union[Iterable[str], Dict[str, Optional[str]]], Connects current region to regions in exit dictionary. Passed region names must exist first. :param exits: exits from the region. format is {"connecting_region": "exit_name"}. if a non dict is provided, - created entrances will be named "self.name -> connecting_region" - :param rules: rules for the exits from this region. format is {"connecting_region", rule} + created entrances will be named "self.name -> connecting_region" + :param rules: rules for the exits from this region. format is {"connecting_region": rule} """ if not isinstance(exits, Dict): exits = dict.fromkeys(exits) @@ -1550,21 +1607,19 @@ def create_playthrough(self, create_paths: bool = True) -> None: # in the second phase, we cull each sphere such that the game is still beatable, # reducing each range of influence to the bare minimum required inside it - restore_later: Dict[Location, Item] = {} + required_locations = {location for sphere in collection_spheres for location in sphere} for num, sphere in reversed(tuple(enumerate(collection_spheres))): to_delete: Set[Location] = set() for location in sphere: - # we remove the item at location and check if game is still beatable + # we remove the location from required_locations to sweep from, and check if the game is still beatable logging.debug('Checking if %s (Player %d) is required to beat the game.', location.item.name, location.item.player) - old_item = location.item - location.item = None - if multiworld.can_beat_game(state_cache[num]): + required_locations.remove(location) + if multiworld.can_beat_game(state_cache[num], required_locations): to_delete.add(location) - restore_later[location] = old_item else: # still required, got to keep it around - location.item = old_item + required_locations.add(location) # cull entries in spheres for spoiler walkthrough at end sphere -= to_delete @@ -1581,7 +1636,7 @@ def create_playthrough(self, create_paths: bool = True) -> None: logging.debug('Checking if %s (Player %d) is required to beat the game.', item.name, item.player) precollected_items.remove(item) multiworld.state.remove(item) - if not multiworld.can_beat_game(): + if not multiworld.can_beat_game(multiworld.state, required_locations): # Add the item back into `precollected_items` and collect it into `multiworld.state`. multiworld.push_precollected(item) else: @@ -1623,9 +1678,6 @@ def create_playthrough(self, create_paths: bool = True) -> None: self.create_paths(state, collection_spheres) # repair the multiworld again - for location, item in restore_later.items(): - location.item = item - for item in removed_precollected: multiworld.push_precollected(item) diff --git a/CommonClient.py b/CommonClient.py index b622fb939bec..3a5f51aeee33 100644 --- a/CommonClient.py +++ b/CommonClient.py @@ -196,25 +196,11 @@ def __init__(self, ctx: CommonContext, lookup_type: typing.Literal["item", "loca self.lookup_type: typing.Literal["item", "location"] = lookup_type self._unknown_item: typing.Callable[[int], str] = lambda key: f"Unknown {lookup_type} (ID: {key})" self._archipelago_lookup: typing.Dict[int, str] = {} - self._flat_store: typing.Dict[int, str] = Utils.KeyedDefaultDict(self._unknown_item) self._game_store: typing.Dict[str, typing.ChainMap[int, str]] = collections.defaultdict( lambda: collections.ChainMap(self._archipelago_lookup, Utils.KeyedDefaultDict(self._unknown_item))) - self.warned: bool = False # noinspection PyTypeChecker def __getitem__(self, key: str) -> typing.Mapping[int, str]: - # TODO: In a future version (0.6.0?) this should be simplified by removing implicit id lookups support. - if isinstance(key, int): - if not self.warned: - # Use warnings instead of logger to avoid deprecation message from appearing on user side. - self.warned = True - warnings.warn(f"Implicit name lookup by id only is deprecated and only supported to maintain " - f"backwards compatibility for now. If multiple games share the same id for a " - f"{self.lookup_type}, name could be incorrect. Please use " - f"`{self.lookup_type}_names.lookup_in_game()` or " - f"`{self.lookup_type}_names.lookup_in_slot()` instead.") - return self._flat_store[key] # type: ignore - return self._game_store[key] def __len__(self) -> int: @@ -254,7 +240,6 @@ def update_game(self, game: str, name_to_id_lookup_table: typing.Dict[str, int]) id_to_name_lookup_table = Utils.KeyedDefaultDict(self._unknown_item) id_to_name_lookup_table.update({code: name for name, code in name_to_id_lookup_table.items()}) self._game_store[game] = collections.ChainMap(self._archipelago_lookup, id_to_name_lookup_table) - self._flat_store.update(id_to_name_lookup_table) # Only needed for legacy lookup method. if game == "Archipelago": # Keep track of the Archipelago data package separately so if it gets updated in a custom datapackage, # it updates in all chain maps automatically. @@ -281,38 +266,71 @@ def update_game(self, game: str, name_to_id_lookup_table: typing.Dict[str, int]) last_death_link: float = time.time() # last send/received death link on AP layer # remaining type info - slot_info: typing.Dict[int, NetworkSlot] - server_address: typing.Optional[str] - password: typing.Optional[str] - hint_cost: typing.Optional[int] - hint_points: typing.Optional[int] - player_names: typing.Dict[int, str] + slot_info: dict[int, NetworkSlot] + """Slot Info from the server for the current connection""" + server_address: str | None + """Autoconnect address provided by the ctx constructor""" + password: str | None + """Password used for Connecting, expected by server_auth""" + hint_cost: int | None + """Current Hint Cost per Hint from the server""" + hint_points: int | None + """Current avaliable Hint Points from the server""" + player_names: dict[int, str] + """Current lookup of slot number to player display name from server (includes aliases)""" finished_game: bool + """ + Bool to signal that status should be updated to Goal after reconnecting + to be used to ensure that a StatusUpdate packet does not get lost when disconnected + """ ready: bool - team: typing.Optional[int] - slot: typing.Optional[int] - auth: typing.Optional[str] - seed_name: typing.Optional[str] + """Bool to keep track of state for the /ready command""" + team: int | None + """Team number of currently connected slot""" + slot: int | None + """Slot number of currently connected slot""" + auth: str | None + """Name used in Connect packet""" + seed_name: str | None + """Seed name that will be validated on opening a socket if present""" # locations - locations_checked: typing.Set[int] # local state - locations_scouted: typing.Set[int] - items_received: typing.List[NetworkItem] - missing_locations: typing.Set[int] # server state - checked_locations: typing.Set[int] # server state - server_locations: typing.Set[int] # all locations the server knows of, missing_location | checked_locations - locations_info: typing.Dict[int, NetworkItem] + locations_checked: set[int] + """ + Local container of location ids checked to signal that LocationChecks should be resent after reconnecting + to be used to ensure that a LocationChecks packet does not get lost when disconnected + """ + locations_scouted: set[int] + """ + Local container of location ids scouted to signal that LocationScouts should be resent after reconnecting + to be used to ensure that a LocationScouts packet does not get lost when disconnected + """ + items_received: list[NetworkItem] + """List of NetworkItems recieved from the server""" + missing_locations: set[int] + """Container of Locations that are unchecked per server state""" + checked_locations: set[int] + """Container of Locations that are checked per server state""" + server_locations: set[int] + """Container of Locations that exist per server state; a combination between missing and checked locations""" + locations_info: dict[int, NetworkItem] + """Dict of location id: NetworkItem info from LocationScouts request""" # data storage - stored_data: typing.Dict[str, typing.Any] - stored_data_notification_keys: typing.Set[str] + stored_data: dict[str, typing.Any] + """ + Data Storage values by key that were retrieved from the server + any keys subscribed to with SetNotify will be kept up to date + """ + stored_data_notification_keys: set[str] + """Current container of watched Data Storage keys, managed by ctx.set_notify""" # internals - # current message box through kvui _messagebox: typing.Optional["kvui.MessageBox"] = None - # message box reporting a loss of connection + """Current message box through kvui""" _messagebox_connection_loss: typing.Optional["kvui.MessageBox"] = None + """Message box reporting a loss of connection""" def __init__(self, server_address: typing.Optional[str] = None, password: typing.Optional[str] = None) -> None: # server state @@ -356,7 +374,6 @@ def __init__(self, server_address: typing.Optional[str] = None, password: typing self.item_names = self.NameLookupDict(self, "item") self.location_names = self.NameLookupDict(self, "location") - self.versions = {} self.checksums = {} self.jsontotextparser = JSONtoTextParser(self) @@ -571,7 +588,6 @@ def update_hint(self, location: int, finding_player: int, status: typing.Optiona # DataPackage async def prepare_data_package(self, relevant_games: typing.Set[str], - remote_date_package_versions: typing.Dict[str, int], remote_data_package_checksums: typing.Dict[str, str]): """Validate that all data is present for the current multiworld. Download, assimilate and cache missing data from the server.""" @@ -580,33 +596,26 @@ async def prepare_data_package(self, relevant_games: typing.Set[str], needed_updates: typing.Set[str] = set() for game in relevant_games: - if game not in remote_date_package_versions and game not in remote_data_package_checksums: + if game not in remote_data_package_checksums: continue - remote_version: int = remote_date_package_versions.get(game, 0) remote_checksum: typing.Optional[str] = remote_data_package_checksums.get(game) - if remote_version == 0 and not remote_checksum: # custom data package and no checksum for this game + if not remote_checksum: # custom data package and no checksum for this game needed_updates.add(game) continue - cached_version: int = self.versions.get(game, 0) cached_checksum: typing.Optional[str] = self.checksums.get(game) # no action required if cached version is new enough - if (not remote_checksum and (remote_version > cached_version or remote_version == 0)) \ - or remote_checksum != cached_checksum: - local_version: int = network_data_package["games"].get(game, {}).get("version", 0) + if remote_checksum != cached_checksum: local_checksum: typing.Optional[str] = network_data_package["games"].get(game, {}).get("checksum") - if ((remote_checksum or remote_version <= local_version and remote_version != 0) - and remote_checksum == local_checksum): + if remote_checksum == local_checksum: self.update_game(network_data_package["games"][game], game) else: cached_game = Utils.load_data_package_for_checksum(game, remote_checksum) - cache_version: int = cached_game.get("version", 0) cache_checksum: typing.Optional[str] = cached_game.get("checksum") # download remote version if cache is not new enough - if (not remote_checksum and (remote_version > cache_version or remote_version == 0)) \ - or remote_checksum != cache_checksum: + if remote_checksum != cache_checksum: needed_updates.add(game) else: self.update_game(cached_game, game) @@ -616,7 +625,6 @@ async def prepare_data_package(self, relevant_games: typing.Set[str], def update_game(self, game_package: dict, game: str): self.item_names.update_game(game, game_package["item_name_to_id"]) self.location_names.update_game(game, game_package["location_name_to_id"]) - self.versions[game] = game_package.get("version", 0) self.checksums[game] = game_package.get("checksum") def update_data_package(self, data_package: dict): @@ -887,9 +895,8 @@ async def process_server_cmd(ctx: CommonContext, args: dict): logger.info(' %s (Player %d)' % (network_player.alias, network_player.slot)) # update data package - data_package_versions = args.get("datapackage_versions", {}) data_package_checksums = args.get("datapackage_checksums", {}) - await ctx.prepare_data_package(set(args["games"]), data_package_versions, data_package_checksums) + await ctx.prepare_data_package(set(args["games"]), data_package_checksums) await ctx.server_auth(args['password']) diff --git a/FF1Client.py b/FF1Client.py deleted file mode 100644 index 748a95b72cf4..000000000000 --- a/FF1Client.py +++ /dev/null @@ -1,267 +0,0 @@ -import asyncio -import copy -import json -import time -from asyncio import StreamReader, StreamWriter -from typing import List - - -import Utils -from Utils import async_start -from CommonClient import CommonContext, server_loop, gui_enabled, ClientCommandProcessor, logger, \ - get_base_parser - -SYSTEM_MESSAGE_ID = 0 - -CONNECTION_TIMING_OUT_STATUS = "Connection timing out. Please restart your emulator, then restart connector_ff1.lua" -CONNECTION_REFUSED_STATUS = "Connection Refused. Please start your emulator and make sure connector_ff1.lua is running" -CONNECTION_RESET_STATUS = "Connection was reset. Please restart your emulator, then restart connector_ff1.lua" -CONNECTION_TENTATIVE_STATUS = "Initial Connection Made" -CONNECTION_CONNECTED_STATUS = "Connected" -CONNECTION_INITIAL_STATUS = "Connection has not been initiated" - -DISPLAY_MSGS = True - - -class FF1CommandProcessor(ClientCommandProcessor): - def __init__(self, ctx: CommonContext): - super().__init__(ctx) - - def _cmd_nes(self): - """Check NES Connection State""" - if isinstance(self.ctx, FF1Context): - logger.info(f"NES Status: {self.ctx.nes_status}") - - def _cmd_toggle_msgs(self): - """Toggle displaying messages in EmuHawk""" - global DISPLAY_MSGS - DISPLAY_MSGS = not DISPLAY_MSGS - logger.info(f"Messages are now {'enabled' if DISPLAY_MSGS else 'disabled'}") - - -class FF1Context(CommonContext): - command_processor = FF1CommandProcessor - game = 'Final Fantasy' - items_handling = 0b111 # full remote - - def __init__(self, server_address, password): - super().__init__(server_address, password) - self.nes_streams: (StreamReader, StreamWriter) = None - self.nes_sync_task = None - self.messages = {} - self.locations_array = None - self.nes_status = CONNECTION_INITIAL_STATUS - self.awaiting_rom = False - self.display_msgs = True - - async def server_auth(self, password_requested: bool = False): - if password_requested and not self.password: - await super(FF1Context, self).server_auth(password_requested) - if not self.auth: - self.awaiting_rom = True - logger.info('Awaiting connection to NES to get Player information') - return - - await self.send_connect() - - def _set_message(self, msg: str, msg_id: int): - if DISPLAY_MSGS: - self.messages[time.time(), msg_id] = msg - - def on_package(self, cmd: str, args: dict): - if cmd == 'Connected': - async_start(parse_locations(self.locations_array, self, True)) - elif cmd == 'Print': - msg = args['text'] - if ': !' not in msg: - self._set_message(msg, SYSTEM_MESSAGE_ID) - - def on_print_json(self, args: dict): - if self.ui: - self.ui.print_json(copy.deepcopy(args["data"])) - else: - text = self.jsontotextparser(copy.deepcopy(args["data"])) - logger.info(text) - relevant = args.get("type", None) in {"Hint", "ItemSend"} - if relevant: - item = args["item"] - # goes to this world - if self.slot_concerns_self(args["receiving"]): - relevant = True - # found in this world - elif self.slot_concerns_self(item.player): - relevant = True - # not related - else: - relevant = False - if relevant: - item = args["item"] - msg = self.raw_text_parser(copy.deepcopy(args["data"])) - self._set_message(msg, item.item) - - def run_gui(self): - from kvui import GameManager - - class FF1Manager(GameManager): - logging_pairs = [ - ("Client", "Archipelago") - ] - base_title = "Archipelago Final Fantasy 1 Client" - - self.ui = FF1Manager(self) - self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI") - - -def get_payload(ctx: FF1Context): - current_time = time.time() - return json.dumps( - { - "items": [item.item for item in ctx.items_received], - "messages": {f'{key[0]}:{key[1]}': value for key, value in ctx.messages.items() - if key[0] > current_time - 10} - } - ) - - -async def parse_locations(locations_array: List[int], ctx: FF1Context, force: bool): - if locations_array == ctx.locations_array and not force: - return - else: - # print("New values") - ctx.locations_array = locations_array - locations_checked = [] - if len(locations_array) > 0xFE and locations_array[0xFE] & 0x02 != 0 and not ctx.finished_game: - await ctx.send_msgs([ - {"cmd": "StatusUpdate", - "status": 30} - ]) - ctx.finished_game = True - for location in ctx.missing_locations: - # index will be - 0x100 or 0x200 - index = location - if location < 0x200: - # Location is a chest - index -= 0x100 - flag = 0x04 - else: - # Location is an NPC - index -= 0x200 - flag = 0x02 - - # print(f"Location: {ctx.location_names[location]}") - # print(f"Index: {str(hex(index))}") - # print(f"value: {locations_array[index] & flag != 0}") - if locations_array[index] & flag != 0: - locations_checked.append(location) - if locations_checked: - # print([ctx.location_names[location] for location in locations_checked]) - await ctx.send_msgs([ - {"cmd": "LocationChecks", - "locations": locations_checked} - ]) - - -async def nes_sync_task(ctx: FF1Context): - logger.info("Starting nes connector. Use /nes for status information") - while not ctx.exit_event.is_set(): - error_status = None - if ctx.nes_streams: - (reader, writer) = ctx.nes_streams - msg = get_payload(ctx).encode() - writer.write(msg) - writer.write(b'\n') - try: - await asyncio.wait_for(writer.drain(), timeout=1.5) - try: - # Data will return a dict with up to two fields: - # 1. A keepalive response of the Players Name (always) - # 2. An array representing the memory values of the locations area (if in game) - data = await asyncio.wait_for(reader.readline(), timeout=5) - data_decoded = json.loads(data.decode()) - # print(data_decoded) - if ctx.game is not None and 'locations' in data_decoded: - # Not just a keep alive ping, parse - async_start(parse_locations(data_decoded['locations'], ctx, False)) - if not ctx.auth: - ctx.auth = ''.join([chr(i) for i in data_decoded['playerName'] if i != 0]) - if ctx.auth == '': - logger.info("Invalid ROM detected. No player name built into the ROM. Please regenerate" - "the ROM using the same link but adding your slot name") - if ctx.awaiting_rom: - await ctx.server_auth(False) - except asyncio.TimeoutError: - logger.debug("Read Timed Out, Reconnecting") - error_status = CONNECTION_TIMING_OUT_STATUS - writer.close() - ctx.nes_streams = None - except ConnectionResetError as e: - logger.debug("Read failed due to Connection Lost, Reconnecting") - error_status = CONNECTION_RESET_STATUS - writer.close() - ctx.nes_streams = None - except TimeoutError: - logger.debug("Connection Timed Out, Reconnecting") - error_status = CONNECTION_TIMING_OUT_STATUS - writer.close() - ctx.nes_streams = None - except ConnectionResetError: - logger.debug("Connection Lost, Reconnecting") - error_status = CONNECTION_RESET_STATUS - writer.close() - ctx.nes_streams = None - if ctx.nes_status == CONNECTION_TENTATIVE_STATUS: - if not error_status: - logger.info("Successfully Connected to NES") - ctx.nes_status = CONNECTION_CONNECTED_STATUS - else: - ctx.nes_status = f"Was tentatively connected but error occured: {error_status}" - elif error_status: - ctx.nes_status = error_status - logger.info("Lost connection to nes and attempting to reconnect. Use /nes for status updates") - else: - try: - logger.debug("Attempting to connect to NES") - ctx.nes_streams = await asyncio.wait_for(asyncio.open_connection("localhost", 52980), timeout=10) - ctx.nes_status = CONNECTION_TENTATIVE_STATUS - except TimeoutError: - logger.debug("Connection Timed Out, Trying Again") - ctx.nes_status = CONNECTION_TIMING_OUT_STATUS - continue - except ConnectionRefusedError: - logger.debug("Connection Refused, Trying Again") - ctx.nes_status = CONNECTION_REFUSED_STATUS - continue - - -if __name__ == '__main__': - # Text Mode to use !hint and such with games that have no text entry - Utils.init_logging("FF1Client") - - options = Utils.get_options() - DISPLAY_MSGS = options["ffr_options"]["display_msgs"] - - async def main(args): - ctx = FF1Context(args.connect, args.password) - ctx.server_task = asyncio.create_task(server_loop(ctx), name="ServerLoop") - if gui_enabled: - ctx.run_gui() - ctx.run_cli() - ctx.nes_sync_task = asyncio.create_task(nes_sync_task(ctx), name="NES Sync") - - await ctx.exit_event.wait() - ctx.server_address = None - - await ctx.shutdown() - - if ctx.nes_sync_task: - await ctx.nes_sync_task - - - import colorama - - parser = get_base_parser() - args = parser.parse_args() - colorama.just_fix_windows_console() - - asyncio.run(main(args)) - colorama.deinit() diff --git a/FactorioClient.py b/FactorioClient.py deleted file mode 100644 index 070ca503269f..000000000000 --- a/FactorioClient.py +++ /dev/null @@ -1,12 +0,0 @@ -from __future__ import annotations - -import ModuleUpdate -ModuleUpdate.update() - -from worlds.factorio.Client import check_stdin, launch -import Utils - -if __name__ == "__main__": - Utils.init_logging("FactorioClient", exception_logger="Client") - check_stdin() - launch() diff --git a/Fill.py b/Fill.py index cce7aec2091e..abdad4407097 100644 --- a/Fill.py +++ b/Fill.py @@ -4,7 +4,7 @@ import typing from collections import Counter, deque -from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld +from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, PlandoItemBlock from Options import Accessibility from worlds.AutoWorld import call_all @@ -100,7 +100,7 @@ def fill_restrictive(multiworld: MultiWorld, base_state: CollectionState, locati # if minimal accessibility, only check whether location is reachable if game not beatable if multiworld.worlds[item_to_place.player].options.accessibility == Accessibility.option_minimal: perform_access_check = not multiworld.has_beaten_game(maximum_exploration_state, - item_to_place.player) \ + item_to_place.player) \ if single_player_placement else not has_beaten_game else: perform_access_check = True @@ -138,32 +138,21 @@ def fill_restrictive(multiworld: MultiWorld, base_state: CollectionState, locati # to clean that up later, so there is a chance generation fails. if (not single_player_placement or location.player == item_to_place.player) \ and location.can_fill(swap_state, item_to_place, perform_access_check): + # Add this item to the existing placement, and + # add the old item to the back of the queue + spot_to_fill = placements.pop(i) - # Verify placing this item won't reduce available locations, which would be a useless swap. - prev_state = swap_state.copy() - prev_loc_count = len( - multiworld.get_reachable_locations(prev_state)) + swap_count += 1 + swapped_items[placed_item.player, placed_item.name, unsafe] = swap_count - swap_state.collect(item_to_place, True) - new_loc_count = len( - multiworld.get_reachable_locations(swap_state)) + reachable_items[placed_item.player].appendleft( + placed_item) + item_pool.append(placed_item) - if new_loc_count >= prev_loc_count: - # Add this item to the existing placement, and - # add the old item to the back of the queue - spot_to_fill = placements.pop(i) + # cleanup at the end to hopefully get better errors + cleanup_required = True - swap_count += 1 - swapped_items[placed_item.player, placed_item.name, unsafe] = swap_count - - reachable_items[placed_item.player].appendleft( - placed_item) - item_pool.append(placed_item) - - # cleanup at the end to hopefully get better errors - cleanup_required = True - - break + break # Item can't be placed here, restore original item location.item = placed_item @@ -242,7 +231,7 @@ def remaining_fill(multiworld: MultiWorld, unplaced_items: typing.List[Item] = [] placements: typing.List[Location] = [] swapped_items: typing.Counter[typing.Tuple[int, str]] = Counter() - total = min(len(itempool), len(locations)) + total = min(len(itempool), len(locations)) placed = 0 # Optimisation: Decide whether to do full location.can_fill check (respect excluded), or only check the item rule @@ -343,8 +332,10 @@ def fast_fill(multiworld: MultiWorld, def accessibility_corrections(multiworld: MultiWorld, state: CollectionState, locations, pool=[]): maximum_exploration_state = sweep_from_pool(state, pool) - minimal_players = {player for player in multiworld.player_ids if multiworld.worlds[player].options.accessibility == "minimal"} - unreachable_locations = [location for location in multiworld.get_locations() if location.player in minimal_players and + minimal_players = {player for player in multiworld.player_ids if + multiworld.worlds[player].options.accessibility == "minimal"} + unreachable_locations = [location for location in multiworld.get_locations() if + location.player in minimal_players and not location.can_reach(maximum_exploration_state)] for location in unreachable_locations: if (location.item is not None and location.item.advancement and location.address is not None and not @@ -365,7 +356,7 @@ def inaccessible_location_rules(multiworld: MultiWorld, state: CollectionState, unreachable_locations = [location for location in locations if not location.can_reach(maximum_exploration_state)] if unreachable_locations: def forbid_important_item_rule(item: Item): - return not ((item.classification & 0b0011) and multiworld.worlds[item.player].options.accessibility != 'minimal') + return not ((item.classification & 0b0011) and multiworld.worlds[item.player].options.accessibility != "minimal") for location in unreachable_locations: add_item_rule(location, forbid_important_item_rule) @@ -677,9 +668,9 @@ def balance_multiworld_progression(multiworld: MultiWorld) -> None: if multiworld.worlds[player].options.progression_balancing > 0 } if not balanceable_players: - logging.info('Skipping multiworld progression balancing.') + logging.info("Skipping multiworld progression balancing.") else: - logging.info(f'Balancing multiworld progression for {len(balanceable_players)} Players.') + logging.info(f"Balancing multiworld progression for {len(balanceable_players)} Players.") logging.debug(balanceable_players) state: CollectionState = CollectionState(multiworld) checked_locations: typing.Set[Location] = set() @@ -777,7 +768,7 @@ def item_percentage(player: int, num: int) -> float: if player in threshold_percentages): break elif not balancing_sphere: - raise RuntimeError('Not all required items reachable. Something went terribly wrong here.') + raise RuntimeError("Not all required items reachable. Something went terribly wrong here.") # Gather a set of locations which we can swap items into unlocked_locations: typing.Dict[int, typing.Set[Location]] = collections.defaultdict(set) for l in unchecked_locations: @@ -793,8 +784,8 @@ def item_percentage(player: int, num: int) -> float: testing = items_to_test.pop() reducing_state = state.copy() for location in itertools.chain(( - l for l in items_to_replace - if l.item.player == player + l for l in items_to_replace + if l.item.player == player ), items_to_test): reducing_state.collect(location.item, True, location) @@ -867,52 +858,30 @@ def swap_location_item(location_1: Location, location_2: Location, check_locked: location_2.item.location = location_2 -def distribute_planned(multiworld: MultiWorld) -> None: - def warn(warning: str, force: typing.Union[bool, str]) -> None: - if force in [True, 'fail', 'failure', 'none', False, 'warn', 'warning']: - logging.warning(f'{warning}') +def parse_planned_blocks(multiworld: MultiWorld) -> dict[int, list[PlandoItemBlock]]: + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") else: - logging.debug(f'{warning}') + logging.debug(f"{warning}") - def failed(warning: str, force: typing.Union[bool, str]) -> None: - if force in [True, 'fail', 'failure']: + def failed(warning: str, force: bool | str) -> None: + if force is True: raise Exception(warning) else: warn(warning, force) - swept_state = multiworld.state.copy() - swept_state.sweep_for_advancements() - reachable = frozenset(multiworld.get_reachable_locations(swept_state)) - early_locations: typing.Dict[int, typing.List[str]] = collections.defaultdict(list) - non_early_locations: typing.Dict[int, typing.List[str]] = collections.defaultdict(list) - for loc in multiworld.get_unfilled_locations(): - if loc in reachable: - early_locations[loc.player].append(loc.name) - else: # not reachable with swept state - non_early_locations[loc.player].append(loc.name) - world_name_lookup = multiworld.world_name_lookup - block_value = typing.Union[typing.List[str], typing.Dict[str, typing.Any], str] - plando_blocks: typing.List[typing.Dict[str, typing.Any]] = [] - player_ids = set(multiworld.player_ids) + plando_blocks: dict[int, list[PlandoItemBlock]] = dict() + player_ids: set[int] = set(multiworld.player_ids) for player in player_ids: - for block in multiworld.plando_items[player]: - block['player'] = player - if 'force' not in block: - block['force'] = 'silent' - if 'from_pool' not in block: - block['from_pool'] = True - elif not isinstance(block['from_pool'], bool): - from_pool_type = type(block['from_pool']) - raise Exception(f'Plando "from_pool" has to be boolean, not {from_pool_type} for player {player}.') - if 'world' not in block: - target_world = False - else: - target_world = block['world'] - + plando_blocks[player] = [] + for block in multiworld.worlds[player].options.plando_items: + new_block: PlandoItemBlock = PlandoItemBlock(player, block.from_pool, block.force) + target_world = block.world if target_world is False or multiworld.players == 1: # target own world - worlds: typing.Set[int] = {player} + worlds: set[int] = {player} elif target_world is True: # target any worlds besides own worlds = set(multiworld.player_ids) - {player} elif target_world is None: # target all worlds @@ -921,173 +890,201 @@ def failed(warning: str, force: typing.Union[bool, str]) -> None: worlds = set() for listed_world in target_world: if listed_world not in world_name_lookup: - failed(f"Cannot place item to {target_world}'s world as that world does not exist.", - block['force']) + failed(f"Cannot place item to {listed_world}'s world as that world does not exist.", + block.force) continue worlds.add(world_name_lookup[listed_world]) elif type(target_world) == int: # target world by slot number if target_world not in range(1, multiworld.players + 1): failed( f"Cannot place item in world {target_world} as it is not in range of (1, {multiworld.players})", - block['force']) + block.force) continue worlds = {target_world} else: # target world by slot name if target_world not in world_name_lookup: failed(f"Cannot place item to {target_world}'s world as that world does not exist.", - block['force']) + block.force) continue worlds = {world_name_lookup[target_world]} - block['world'] = worlds - - items: block_value = [] - if "items" in block: - items = block["items"] - if 'count' not in block: - block['count'] = False - elif "item" in block: - items = block["item"] - if 'count' not in block: - block['count'] = 1 - else: - failed("You must specify at least one item to place items with plando.", block['force']) - continue + new_block.worlds = worlds + + items: list[str] | dict[str, typing.Any] = block.items if isinstance(items, dict): - item_list: typing.List[str] = [] + item_list: list[str] = [] for key, value in items.items(): if value is True: value = multiworld.itempool.count(multiworld.worlds[player].create_item(key)) item_list += [key] * value items = item_list - if isinstance(items, str): - items = [items] - block['items'] = items - - locations: block_value = [] - if 'location' in block: - locations = block['location'] # just allow 'location' to keep old yamls compatible - elif 'locations' in block: - locations = block['locations'] + new_block.items = items + + locations: list[str] = block.locations if isinstance(locations, str): locations = [locations] - if isinstance(locations, dict): - location_list = [] - for key, value in locations.items(): - location_list += [key] * value - locations = location_list + resolved_locations: list[Location] = [] + for target_player in worlds: + locations_from_groups: list[str] = [] + world_locations = multiworld.get_unfilled_locations(target_player) + for group in multiworld.worlds[target_player].location_name_groups: + if group in locations: + locations_from_groups.extend(multiworld.worlds[target_player].location_name_groups[group]) + resolved_locations.extend(location for location in world_locations + if location.name in [*locations, *locations_from_groups]) + new_block.locations = sorted(dict.fromkeys(locations)) + new_block.resolved_locations = sorted(set(resolved_locations)) + + count = block.count + if not count: + count = (min(len(new_block.items), len(new_block.resolved_locations)) + if new_block.resolved_locations else len(new_block.items)) + if isinstance(count, int): + count = {"min": count, "max": count} + if "min" not in count: + count["min"] = 0 + if "max" not in count: + count["max"] = (min(len(new_block.items), len(new_block.resolved_locations)) + if new_block.resolved_locations else len(new_block.items)) + + + new_block.count = count + plando_blocks[player].append(new_block) + + return plando_blocks + + +def resolve_early_locations_for_planned(multiworld: MultiWorld): + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") + else: + logging.debug(f"{warning}") + + def failed(warning: str, force: bool | str) -> None: + if force is True: + raise Exception(warning) + else: + warn(warning, force) + swept_state = multiworld.state.copy() + swept_state.sweep_for_advancements() + reachable = frozenset(multiworld.get_reachable_locations(swept_state)) + early_locations: dict[int, list[Location]] = collections.defaultdict(list) + non_early_locations: dict[int, list[Location]] = collections.defaultdict(list) + for loc in multiworld.get_unfilled_locations(): + if loc in reachable: + early_locations[loc.player].append(loc) + else: # not reachable with swept state + non_early_locations[loc.player].append(loc) + + for player in multiworld.plando_item_blocks: + removed = [] + for block in multiworld.plando_item_blocks[player]: + locations = block.locations + resolved_locations = block.resolved_locations + worlds = block.worlds if "early_locations" in locations: - locations.remove("early_locations") for target_player in worlds: - locations += early_locations[target_player] + resolved_locations += early_locations[target_player] if "non_early_locations" in locations: - locations.remove("non_early_locations") for target_player in worlds: - locations += non_early_locations[target_player] - - block['locations'] = list(dict.fromkeys(locations)) - - if not block['count']: - block['count'] = (min(len(block['items']), len(block['locations'])) if - len(block['locations']) > 0 else len(block['items'])) - if isinstance(block['count'], int): - block['count'] = {'min': block['count'], 'max': block['count']} - if 'min' not in block['count']: - block['count']['min'] = 0 - if 'max' not in block['count']: - block['count']['max'] = (min(len(block['items']), len(block['locations'])) if - len(block['locations']) > 0 else len(block['items'])) - if block['count']['max'] > len(block['items']): - count = block['count'] - failed(f"Plando count {count} greater than items specified", block['force']) - block['count'] = len(block['items']) - if block['count']['max'] > len(block['locations']) > 0: - count = block['count'] - failed(f"Plando count {count} greater than locations specified", block['force']) - block['count'] = len(block['locations']) - block['count']['target'] = multiworld.random.randint(block['count']['min'], block['count']['max']) - - if block['count']['target'] > 0: - plando_blocks.append(block) + resolved_locations += non_early_locations[target_player] + + if block.count["max"] > len(block.items): + count = block.count["max"] + failed(f"Plando count {count} greater than items specified", block.force) + block.count["max"] = len(block.items) + if block.count["min"] > len(block.items): + block.count["min"] = len(block.items) + if block.count["max"] > len(block.resolved_locations) > 0: + count = block.count["max"] + failed(f"Plando count {count} greater than locations specified", block.force) + block.count["max"] = len(block.resolved_locations) + if block.count["min"] > len(block.resolved_locations): + block.count["min"] = len(block.resolved_locations) + block.count["target"] = multiworld.random.randint(block.count["min"], + block.count["max"]) + + if not block.count["target"]: + removed.append(block) + + for block in removed: + multiworld.plando_item_blocks[player].remove(block) + + +def distribute_planned_blocks(multiworld: MultiWorld, plando_blocks: list[PlandoItemBlock]): + def warn(warning: str, force: bool | str) -> None: + if isinstance(force, bool): + logging.warning(f"{warning}") + else: + logging.debug(f"{warning}") + + def failed(warning: str, force: bool | str) -> None: + if force is True: + raise Exception(warning) + else: + warn(warning, force) # shuffle, but then sort blocks by number of locations minus number of items, # so less-flexible blocks get priority multiworld.random.shuffle(plando_blocks) - plando_blocks.sort(key=lambda block: (len(block['locations']) - block['count']['target'] - if len(block['locations']) > 0 - else len(multiworld.get_unfilled_locations(player)) - block['count']['target'])) - + plando_blocks.sort(key=lambda block: (len(block.resolved_locations) - block.count["target"] + if len(block.resolved_locations) > 0 + else len(multiworld.get_unfilled_locations(block.player)) - + block.count["target"])) for placement in plando_blocks: - player = placement['player'] + player = placement.player try: - worlds = placement['world'] - locations = placement['locations'] - items = placement['items'] - maxcount = placement['count']['target'] - from_pool = placement['from_pool'] - - candidates = list(multiworld.get_unfilled_locations_for_players(locations, sorted(worlds))) - multiworld.random.shuffle(candidates) - multiworld.random.shuffle(items) - count = 0 - err: typing.List[str] = [] - successful_pairs: typing.List[typing.Tuple[int, Item, Location]] = [] - claimed_indices: typing.Set[typing.Optional[int]] = set() - for item_name in items: - index_to_delete: typing.Optional[int] = None - if from_pool: - try: - # If from_pool, try to find an existing item with this name & player in the itempool and use it - index_to_delete, item = next( - (i, item) for i, item in enumerate(multiworld.itempool) - if item.player == player and item.name == item_name and i not in claimed_indices - ) - except StopIteration: - warn( - f"Could not remove {item_name} from pool for {multiworld.player_name[player]} as it's already missing from it.", - placement['force']) - item = multiworld.worlds[player].create_item(item_name) - else: - item = multiworld.worlds[player].create_item(item_name) - - for location in reversed(candidates): - if (location.address is None) == (item.code is None): # either both None or both not None - if not location.item: - if location.item_rule(item): - if location.can_fill(multiworld.state, item, False): - successful_pairs.append((index_to_delete, item, location)) - claimed_indices.add(index_to_delete) - candidates.remove(location) - count = count + 1 - break - else: - err.append(f"Can't place item at {location} due to fill condition not met.") - else: - err.append(f"{item_name} not allowed at {location}.") - else: - err.append(f"Cannot place {item_name} into already filled location {location}.") + worlds = placement.worlds + locations = placement.resolved_locations + items = placement.items + maxcount = placement.count["target"] + from_pool = placement.from_pool + + item_candidates = [] + if from_pool: + instances = [item for item in multiworld.itempool if item.player == player and item.name in items] + for item in multiworld.random.sample(items, maxcount): + candidate = next((i for i in instances if i.name == item), None) + if candidate is None: + warn(f"Could not remove {item} from pool for {multiworld.player_name[player]} as " + f"it's already missing from it", placement.force) + candidate = multiworld.worlds[player].create_item(item) else: - err.append(f"Mismatch between {item_name} and {location}, only one is an event.") - - if count == maxcount: - break - if count < placement['count']['min']: - m = placement['count']['min'] - failed( - f"Plando block failed to place {m - count} of {m} item(s) for {multiworld.player_name[player]}, error(s): {' '.join(err)}", - placement['force']) - - # Sort indices in reverse so we can remove them one by one - successful_pairs = sorted(successful_pairs, key=lambda successful_pair: successful_pair[0] or 0, reverse=True) - - for (index, item, location) in successful_pairs: - multiworld.push_item(location, item, collect=False) - location.locked = True - logging.debug(f"Plando placed {item} at {location}") - if index is not None: # If this item is from_pool and was found in the pool, remove it. - multiworld.itempool.pop(index) - + multiworld.itempool.remove(candidate) + instances.remove(candidate) + item_candidates.append(candidate) + else: + item_candidates = [multiworld.worlds[player].create_item(item) + for item in multiworld.random.sample(items, maxcount)] + if any(item.code is None for item in item_candidates) \ + and not all(item.code is None for item in item_candidates): + failed(f"Plando block for player {player} ({multiworld.player_name[player]}) contains both " + f"event items and non-event items. " + f"Event items: {[item for item in item_candidates if item.code is None]}, " + f"Non-event items: {[item for item in item_candidates if item.code is not None]}", + placement.force) + continue + else: + is_real = item_candidates[0].code is not None + candidates = [candidate for candidate in locations if candidate.item is None + and bool(candidate.address) == is_real] + multiworld.random.shuffle(candidates) + allstate = multiworld.get_all_state(False) + mincount = placement.count["min"] + allowed_margin = len(item_candidates) - mincount + fill_restrictive(multiworld, allstate, candidates, item_candidates, lock=True, + allow_partial=True, name="Plando Main Fill") + + if len(item_candidates) > allowed_margin: + failed(f"Could not place {len(item_candidates)} " + f"of {mincount + allowed_margin} item(s) " + f"for {multiworld.player_name[player]}, " + f"remaining items: {item_candidates}", + placement.force) + if from_pool: + multiworld.itempool.extend([item for item in item_candidates if item.code is not None]) except Exception as e: raise Exception( f"Error running plando for player {player} ({multiworld.player_name[player]})") from e diff --git a/Generate.py b/Generate.py index 5b5219841d66..f9607e328bc8 100644 --- a/Generate.py +++ b/Generate.py @@ -10,8 +10,8 @@ import urllib.parse import urllib.request from collections import Counter -from typing import Any, Dict, Tuple, Union from itertools import chain +from typing import Any import ModuleUpdate @@ -77,7 +77,7 @@ def get_seed_name(random_source) -> str: return f"{random_source.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits) -def main(args=None) -> Tuple[argparse.Namespace, int]: +def main(args=None) -> tuple[argparse.Namespace, int]: # __name__ == "__main__" check so unittests that already imported worlds don't trip this. if __name__ == "__main__" and "worlds" in sys.modules: raise Exception("Worlds system should not be loaded before logging init.") @@ -95,7 +95,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: logging.info("Race mode enabled. Using non-deterministic random source.") random.seed() # reset to time-based random source - weights_cache: Dict[str, Tuple[Any, ...]] = {} + weights_cache: dict[str, tuple[Any, ...]] = {} if args.weights_file_path and os.path.exists(args.weights_file_path): try: weights_cache[args.weights_file_path] = read_weights_yamls(args.weights_file_path) @@ -180,7 +180,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: erargs.name = {} erargs.csv_output = args.csv_output - settings_cache: Dict[str, Tuple[argparse.Namespace, ...]] = \ + settings_cache: dict[str, tuple[argparse.Namespace, ...]] = \ {fname: (tuple(roll_settings(yaml, args.plando) for yaml in yamls) if args.sameoptions else None) for fname, yamls in weights_cache.items()} @@ -212,7 +212,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: path = player_path_cache[player] if path: try: - settings: Tuple[argparse.Namespace, ...] = settings_cache[path] if settings_cache[path] else \ + settings: tuple[argparse.Namespace, ...] = settings_cache[path] if settings_cache[path] else \ tuple(roll_settings(yaml, args.plando) for yaml in weights_cache[path]) for settingsObject in settings: for k, v in vars(settingsObject).items(): @@ -224,10 +224,14 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: except Exception as e: raise Exception(f"Error setting {k} to {v} for player {player}") from e - if path == args.weights_file_path: # if name came from the weights file, just use base player name - erargs.name[player] = f"Player{player}" - elif player not in erargs.name: # if name was not specified, generate it from filename - erargs.name[player] = os.path.splitext(os.path.split(path)[-1])[0] + # name was not specified + if player not in erargs.name: + if path == args.weights_file_path: + # weights file, so we need to make the name unique + erargs.name[player] = f"Player{player}" + else: + # use the filename + erargs.name[player] = os.path.splitext(os.path.split(path)[-1])[0] erargs.name[player] = handle_name(erargs.name[player], player, name_counter) player += 1 @@ -242,7 +246,7 @@ def main(args=None) -> Tuple[argparse.Namespace, int]: return erargs, seed -def read_weights_yamls(path) -> Tuple[Any, ...]: +def read_weights_yamls(path) -> tuple[Any, ...]: try: if urllib.parse.urlparse(path).scheme in ('https', 'file'): yaml = str(urllib.request.urlopen(path).read(), "utf-8-sig") @@ -252,7 +256,20 @@ def read_weights_yamls(path) -> Tuple[Any, ...]: except Exception as e: raise Exception(f"Failed to read weights ({path})") from e - return tuple(parse_yamls(yaml)) + from yaml.error import MarkedYAMLError + try: + return tuple(parse_yamls(yaml)) + except MarkedYAMLError as ex: + if ex.problem_mark: + lines = yaml.splitlines() + if ex.context_mark: + relevant_lines = "\n".join(lines[ex.context_mark.line:ex.problem_mark.line+1]) + else: + relevant_lines = lines[ex.problem_mark.line] + error_line = " " * ex.problem_mark.column + "^" + raise Exception(f"{ex.context} {ex.problem} on line {ex.problem_mark.line}:" + f"\n{relevant_lines}\n{error_line}") + raise ex def interpret_on_off(value) -> bool: @@ -321,12 +338,6 @@ def handle_name(name: str, player: int, name_counter: Counter): return new_name -def roll_percentage(percentage: Union[int, float]) -> bool: - """Roll a percentage chance. - percentage is expected to be in range [0, 100]""" - return random.random() < (float(percentage) / 100) - - def update_weights(weights: dict, new_weights: dict, update_type: str, name: str) -> dict: logging.debug(f'Applying {new_weights}') cleaned_weights = {} @@ -371,7 +382,7 @@ def update_weights(weights: dict, new_weights: dict, update_type: str, name: str return weights -def roll_meta_option(option_key, game: str, category_dict: Dict) -> Any: +def roll_meta_option(option_key, game: str, category_dict: dict) -> Any: from worlds import AutoWorldRegister if not game: @@ -392,7 +403,7 @@ def roll_linked_options(weights: dict) -> dict: if "name" not in option_set: raise ValueError("One of your linked options does not have a name.") try: - if roll_percentage(option_set["percentage"]): + if Options.roll_percentage(option_set["percentage"]): logging.debug(f"Linked option {option_set['name']} triggered.") new_options = option_set["options"] for category_name, category_options in new_options.items(): @@ -425,7 +436,7 @@ def roll_triggers(weights: dict, triggers: list, valid_keys: set) -> dict: trigger_result = get_choice("option_result", option_set) result = get_choice(key, currently_targeted_weights) currently_targeted_weights[key] = result - if result == trigger_result and roll_percentage(get_choice("percentage", option_set, 100)): + if result == trigger_result and Options.roll_percentage(get_choice("percentage", option_set, 100)): for category_name, category_options in option_set["options"].items(): currently_targeted_weights = weights if category_name: @@ -529,10 +540,6 @@ def roll_settings(weights: dict, plando_options: PlandoOptions = PlandoOptions.b handle_option(ret, game_weights, option_key, option, plando_options) valid_keys.add(option_key) - # TODO remove plando_items after moving it to the options system - valid_keys.add("plando_items") - if PlandoOptions.items in plando_options: - ret.plando_items = copy.deepcopy(game_weights.get("plando_items", [])) if ret.game == "A Link to the Past": # TODO there are still more LTTP options not on the options system valid_keys |= {"sprite_pool", "sprite", "random_sprite_on_event"} diff --git a/Launcher.py b/Launcher.py index 859ebf0f768b..5720012cf9a7 100644 --- a/Launcher.py +++ b/Launcher.py @@ -11,14 +11,16 @@ import argparse import logging import multiprocessing +import os import shlex import subprocess import sys import urllib.parse import webbrowser +from collections.abc import Callable, Sequence from os.path import isfile from shutil import which -from typing import Callable, Optional, Sequence, Tuple, Union, Any +from typing import Any if __name__ == "__main__": import ModuleUpdate @@ -40,13 +42,17 @@ def open_host_yaml(): if is_linux: exe = which('sensible-editor') or which('gedit') or \ which('xdg-open') or which('gnome-open') or which('kde-open') - subprocess.Popen([exe, file]) elif is_macos: exe = which("open") - subprocess.Popen([exe, file]) else: webbrowser.open(file) + return + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.Popen([exe, file], env=env) def open_patch(): suffixes = [] @@ -84,12 +90,20 @@ def browse_files(): def open_folder(folder_path): if is_linux: exe = which('xdg-open') or which('gnome-open') or which('kde-open') - subprocess.Popen([exe, folder_path]) elif is_macos: exe = which("open") - subprocess.Popen([exe, folder_path]) else: webbrowser.open(folder_path) + return + + if exe: + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.Popen([exe, folder_path], env=env) + else: + logging.warning(f"No file browser available to open {folder_path}") def update_settings(): @@ -99,66 +113,51 @@ def update_settings(): components.extend([ # Functions - Component("Open host.yaml", func=open_host_yaml), - Component("Open Patch", func=open_patch), - Component("Generate Template Options", func=generate_yamls), - Component("Archipelago Website", func=lambda: webbrowser.open("https://archipelago.gg/")), - Component("Discord Server", icon="discord", func=lambda: webbrowser.open("https://discord.gg/8Z65BR2")), + Component("Open host.yaml", func=open_host_yaml, + description="Open the host.yaml file to change settings for generation, games, and more."), + Component("Open Patch", func=open_patch, + description="Open a patch file, downloaded from the room page or provided by the host."), + Component("Generate Template Options", func=generate_yamls, + description="Generate template YAMLs for currently installed games."), + Component("Archipelago Website", func=lambda: webbrowser.open("https://archipelago.gg/"), + description="Open archipelago.gg in your browser."), + Component("Discord Server", icon="discord", func=lambda: webbrowser.open("https://discord.gg/8Z65BR2"), + description="Join the Discord server to play public multiworlds, report issues, or just chat!"), Component("Unrated/18+ Discord Server", icon="discord", - func=lambda: webbrowser.open("https://discord.gg/fqvNCCRsu4")), - Component("Browse Files", func=browse_files), + func=lambda: webbrowser.open("https://discord.gg/fqvNCCRsu4"), + description="Find unrated and 18+ games in the After Dark Discord server."), + Component("Browse Files", func=browse_files, + description="Open the Archipelago installation folder in your file browser."), ]) -def handle_uri(path: str, launch_args: Tuple[str, ...]) -> None: +def handle_uri(path: str) -> tuple[list[Component], Component]: url = urllib.parse.urlparse(path) queries = urllib.parse.parse_qs(url.query) - launch_args = (path, *launch_args) - client_component = [] + client_components = [] text_client_component = None - if "game" in queries: - game = queries["game"][0] - else: # TODO around 0.6.0 - this is for pre this change webhost uri's - game = "Archipelago" + game = queries["game"][0] for component in components: if component.supports_uri and component.game_name == game: - client_component.append(component) + client_components.append(component) elif component.display_name == "Text Client": text_client_component = component + return client_components, text_client_component - from kvui import MDButton, MDButtonText - from kivymd.uix.dialog import MDDialog, MDDialogHeadlineText, MDDialogContentContainer, MDDialogSupportingText - from kivymd.uix.divider import MDDivider - if not client_component: - run_component(text_client_component, *launch_args) - return - else: - popup_text = MDDialogSupportingText(text="Select client to open and connect with.") - component_buttons = [MDDivider()] - for component in [text_client_component, *client_component]: - component_buttons.append(MDButton( - MDButtonText(text=component.display_name), - on_release=lambda *args, comp=component: run_component(comp, *launch_args), - style="text" - )) - component_buttons.append(MDDivider()) - - MDDialog( - # Headline - MDDialogHeadlineText(text="Connect to Multiworld"), - # Text - popup_text, - # Content - MDDialogContentContainer( - *component_buttons, - orientation="vertical" - ), - - ).open() - - -def identify(path: Union[None, str]) -> Tuple[Union[None, str], Union[None, Component]]: +def build_uri_popup(component_list: list[Component], launch_args: tuple[str, ...]) -> None: + from kvui import ButtonsPrompt + component_options = { + component.display_name: component for component in component_list + } + popup = ButtonsPrompt("Connect to Multiworld", + "Select client to open and connect with.", + lambda component_name: run_component(component_options[component_name], *launch_args), + *component_options.keys()) + popup.open() + + +def identify(path: None | str) -> tuple[None | str, None | Component]: if path is None: return None, None for component in components: @@ -169,7 +168,7 @@ def identify(path: Union[None, str]) -> Tuple[Union[None, str], Union[None, Comp return None, None -def get_exe(component: Union[str, Component]) -> Optional[Sequence[str]]: +def get_exe(component: str | Component) -> Sequence[str] | None: if isinstance(component, str): name = component component = None @@ -197,7 +196,8 @@ def get_exe(component: Union[str, Component]) -> Optional[Sequence[str]]: def launch(exe, in_terminal=False): if in_terminal: if is_windows: - subprocess.Popen(['start', *exe], shell=True) + # intentionally using a window title with a space so it gets quoted and treated as a title + subprocess.Popen(["start", "Running Archipelago", *exe], shell=True) return elif is_linux: terminal = which('x-terminal-emulator') or which('gnome-terminal') or which('xterm') @@ -222,10 +222,10 @@ def create_shortcut(button: Any, component: Component) -> None: button.menu.dismiss() -refresh_components: Optional[Callable[[], None]] = None +refresh_components: Callable[[], None] | None = None -def run_gui(path: str, args: Any) -> None: +def run_gui(launch_components: list[Component], args: Any) -> None: from kvui import (ThemedApp, MDFloatLayout, MDGridLayout, ScrollBox) from kivy.properties import ObjectProperty from kivy.core.window import Window @@ -258,12 +258,12 @@ class Launcher(ThemedApp): cards: list[LauncherCard] current_filter: Sequence[str | Type] | None - def __init__(self, ctx=None, path=None, args=None): + def __init__(self, ctx=None, components=None, args=None): self.title = self.base_title + " " + Utils.__version__ self.ctx = ctx self.icon = r"data/icon.png" self.favorites = [] - self.launch_uri = path + self.launch_components = components self.launch_args = args self.cards = [] self.current_filter = (Type.CLIENT, Type.TOOL, Type.ADJUSTER, Type.MISC) @@ -385,9 +385,9 @@ def build(self): return self.top_screen def on_start(self): - if self.launch_uri: - handle_uri(self.launch_uri, self.launch_args) - self.launch_uri = None + if self.launch_components: + build_uri_popup(self.launch_components, self.launch_args) + self.launch_components = None self.launch_args = None @staticmethod @@ -405,7 +405,7 @@ def _on_drop_file(self, window: Window, filename: bytes, x: int, y: int) -> None if file and component: run_component(component, file) else: - logging.warning(f"unable to identify component for {file}") + logging.warning(f"unable to identify component for {filename}") def _on_keyboard(self, window: Window, key: int, scancode: int, codepoint: str, modifier: list[str]): # Activate search as soon as we start typing, no matter if we are focused on the search box or not. @@ -428,7 +428,7 @@ def on_stop(self): for filter in self.current_filter)) super().on_stop() - Launcher(path=path, args=args).run() + Launcher(components=launch_components, args=args).run() # avoiding Launcher reference leak # and don't try to do something with widgets after window closed @@ -447,7 +447,7 @@ def run_component(component: Component, *args): logging.warning(f"Component {component} does not appear to be executable.") -def main(args: Optional[Union[argparse.Namespace, dict]] = None): +def main(args: argparse.Namespace | dict | None = None): if isinstance(args, argparse.Namespace): args = {k: v for k, v in args._get_kwargs()} elif not args: @@ -455,7 +455,15 @@ def main(args: Optional[Union[argparse.Namespace, dict]] = None): path = args.get("Patch|Game|Component|url", None) if path is not None: - if not path.startswith("archipelago://"): + if path.startswith("archipelago://"): + args["args"] = (path, *args.get("args", ())) + # add the url arg to the passthrough args + components, text_client_component = handle_uri(path) + if not components: + args["component"] = text_client_component + else: + args['launch_components'] = [text_client_component, *components] + else: file, component = identify(path) if file: args['file'] = file @@ -471,7 +479,7 @@ def main(args: Optional[Union[argparse.Namespace, dict]] = None): elif "component" in args: run_component(args["component"], *args["args"]) elif not args["update_settings"]: - run_gui(path, args.get("args", ())) + run_gui(args.get("launch_components", None), args.get("args", ())) if __name__ == '__main__': diff --git a/LinksAwakeningClient.py b/LinksAwakeningClient.py index 69f50938d2fb..14aaa415f1da 100644 --- a/LinksAwakeningClient.py +++ b/LinksAwakeningClient.py @@ -33,7 +33,7 @@ from worlds.ladx.ItemTracker import ItemTracker from worlds.ladx.LADXR.checkMetadata import checkMetadataTable from worlds.ladx.Locations import get_locations_to_id, meta_to_name -from worlds.ladx.Tracker import LocationTracker, MagpieBridge +from worlds.ladx.Tracker import LocationTracker, MagpieBridge, Check class GameboyException(Exception): @@ -52,22 +52,6 @@ class BadRetroArchResponse(GameboyException): pass -def magpie_logo(): - from kivy.uix.image import CoreImage - binary_data = """ -iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXN -SR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA -7DAcdvqGQAAADGSURBVDhPhVLBEcIwDHOYhjHCBuXHj2OTbAL8+ -MEGZIxOQ1CinOOk0Op0bmo7tlXXeR9FJMYDLOD9mwcLjQK7+hSZ -wgcWMZJOAGeGKtChNHFL0j+FZD3jSCuo0w7l03wDrWdg00C4/aW -eDEYNenuzPOfPspBnxf0kssE80vN0L8361j10P03DK4x6FHabuV -ear8fHme+b17rwSjbAXeUMLb+EVTV2QHm46MWQanmnydA98KsVS -XkV+qFpGQXrLhT/fqraQeQLuplpNH5g+WkAAAAASUVORK5CYII=""" - binary_data = base64.b64decode(binary_data) - data = io.BytesIO(binary_data) - return CoreImage(data, ext="png").texture - - class LAClientConstants: # Connector version VERSION = 0x01 @@ -530,7 +514,9 @@ def __init__(self, server_address: typing.Optional[str], password: typing.Option def run_gui(self) -> None: import webbrowser - from kvui import GameManager, ImageButton + from kvui import GameManager + from kivy.metrics import dp + from kivymd.uix.button import MDButton, MDButtonText class LADXManager(GameManager): logging_pairs = [ @@ -543,8 +529,10 @@ def build(self): b = super().build() if self.ctx.magpie_enabled: - button = ImageButton(texture=magpie_logo(), fit_mode="cover", image_size=(32, 32), size_hint_x=None, - on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1')) + button = MDButton(MDButtonText(text="Open Tracker"), style="filled", size=(dp(100), dp(70)), radius=5, + size_hint_x=None, size_hint_y=None, pos_hint={"center_y": 0.55}, + on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1')) + button.height = self.server_connect_bar.height self.connect_layout.add_widget(button) return b @@ -638,6 +626,11 @@ def on_package(self, cmd: str, args: dict): "password": self.password, }) + # We can process linked items on already-checked checks now that we have slot_data + if self.client.tracker: + checked_checks = set(self.client.tracker.all_checks) - set(self.client.tracker.remaining_checks) + self.add_linked_items(checked_checks) + # TODO - use watcher_event if cmd == "ReceivedItems": for index, item in enumerate(args["items"], start=args["index"]): @@ -653,6 +646,13 @@ async def sync(self): sync_msg = [{'cmd': 'Sync'}] await self.send_msgs(sync_msg) + def add_linked_items(self, checks: typing.List[Check]): + for check in checks: + if check.value and check.linkedItem: + linkedItem = check.linkedItem + if 'condition' not in linkedItem or (self.slot_data and linkedItem['condition'](self.slot_data)): + self.client.item_tracker.setExtraItem(check.linkedItem['item'], check.linkedItem['qty']) + item_id_lookup = get_locations_to_id() async def run_game_loop(self): @@ -661,11 +661,7 @@ def on_item_get(ladxr_checks): checkMetadataTable[check.id])] for check in ladxr_checks] self.new_checks(checks, [check.id for check in ladxr_checks]) - for check in ladxr_checks: - if check.value and check.linkedItem: - linkedItem = check.linkedItem - if 'condition' not in linkedItem or linkedItem['condition'](self.slot_data): - self.client.item_tracker.setExtraItem(check.linkedItem['item'], check.linkedItem['qty']) + self.add_linked_items(ladxr_checks) async def victory(): await self.send_victory() diff --git a/MMBN3Client.py b/MMBN3Client.py index 4945d49221c4..bdf1427475af 100644 --- a/MMBN3Client.py +++ b/MMBN3Client.py @@ -290,12 +290,9 @@ async def gba_sync_task(ctx: MMBN3Context): async def run_game(romfile): - options = Utils.get_options().get("mmbn3_options", None) - if options is None: - auto_start = True - else: - auto_start = options.get("rom_start", True) - if auto_start: + from worlds.mmbn3 import MMBN3World + auto_start = MMBN3World.settings.rom_start + if auto_start is True: import webbrowser webbrowser.open(romfile) elif os.path.isfile(auto_start): diff --git a/Main.py b/Main.py index 6f6a09619d17..456820a461f7 100644 --- a/Main.py +++ b/Main.py @@ -7,14 +7,14 @@ import time import zipfile import zlib -from typing import Dict, List, Optional, Set, Tuple, Union import worlds -from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld, Region -from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, distribute_planned, \ - flood_items +from BaseClasses import CollectionState, Item, Location, LocationProgressType, MultiWorld +from Fill import FillError, balance_multiworld_progression, distribute_items_restrictive, flood_items, \ + parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned +from NetUtils import convert_to_base_types from Options import StartInventoryPool -from Utils import __version__, output_path, version_tuple, get_settings +from Utils import __version__, output_path, version_tuple from settings import get_settings from worlds import AutoWorld from worlds.generic.Rules import exclusion_rules, locality_rules @@ -22,7 +22,7 @@ __all__ = ["main"] -def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = None): +def main(args, seed=None, baked_server_options: dict[str, object] | None = None): if not baked_server_options: baked_server_options = get_settings().server_options.as_dict() assert isinstance(baked_server_options, dict) @@ -37,9 +37,6 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No logger = logging.getLogger() multiworld.set_seed(seed, args.race, str(args.outputname) if args.outputname else None) multiworld.plando_options = args.plando_options - multiworld.plando_items = args.plando_items.copy() - multiworld.plando_texts = args.plando_texts.copy() - multiworld.plando_connections = args.plando_connections.copy() multiworld.game = args.game.copy() multiworld.player_name = args.name.copy() multiworld.sprite = args.sprite.copy() @@ -135,13 +132,15 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No multiworld.worlds[1].options.non_local_items.value = set() multiworld.worlds[1].options.local_items.value = set() + multiworld.plando_item_blocks = parse_planned_blocks(multiworld) + AutoWorld.call_all(multiworld, "connect_entrances") AutoWorld.call_all(multiworld, "generate_basic") # remove starting inventory from pool items. # Because some worlds don't actually create items during create_items this has to be as late as possible. fallback_inventory = StartInventoryPool({}) - depletion_pool: Dict[int, Dict[str, int]] = { + depletion_pool: dict[int, dict[str, int]] = { player: getattr(multiworld.worlds[player].options, "start_inventory_from_pool", fallback_inventory).value.copy() for player in multiworld.player_ids } @@ -150,7 +149,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No } if target_per_player: - new_itempool: List[Item] = [] + new_itempool: list[Item] = [] # Make new itempool with start_inventory_from_pool items removed for item in multiworld.itempool: @@ -179,8 +178,9 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No multiworld._all_state = None logger.info("Running Item Plando.") - - distribute_planned(multiworld) + resolve_early_locations_for_planned(multiworld) + distribute_planned_blocks(multiworld, [x for player in multiworld.plando_item_blocks + for x in multiworld.plando_item_blocks[player]]) logger.info('Running Pre Main Fill.') @@ -233,7 +233,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No pool.submit(AutoWorld.call_single, multiworld, "generate_output", player, temp_dir)) # collect ER hint info - er_hint_data: Dict[int, Dict[int, str]] = {} + er_hint_data: dict[int, dict[int, str]] = {} AutoWorld.call_all(multiworld, 'extend_hint_information', er_hint_data) def write_multidata(): @@ -274,7 +274,7 @@ def precollect_hint(location: Location, auto_status: HintStatus): for player in multiworld.groups[location.item.player]["players"]: precollected_hints[player].add(hint) - locations_data: Dict[int, Dict[int, Tuple[int, int, int]]] = {player: {} for player in multiworld.player_ids} + locations_data: dict[int, dict[int, tuple[int, int, int]]] = {player: {} for player in multiworld.player_ids} for location in multiworld.get_filled_locations(): if type(location.address) == int: assert location.item.code is not None, "item code None should be event, " \ @@ -301,13 +301,14 @@ def precollect_hint(location: Location, auto_status: HintStatus): game_world.game: worlds.network_data_package["games"][game_world.game] for game_world in multiworld.worlds.values() } + data_package["Archipelago"] = worlds.network_data_package["games"]["Archipelago"] - checks_in_area: Dict[int, Dict[str, Union[int, List[int]]]] = {} + checks_in_area: dict[int, dict[str, int | list[int]]] = {} # get spheres -> filter address==None -> skip empty - spheres: List[Dict[int, Set[int]]] = [] + spheres: list[dict[int, set[int]]] = [] for sphere in multiworld.get_sendable_spheres(): - current_sphere: Dict[int, Set[int]] = collections.defaultdict(set) + current_sphere: dict[int, set[int]] = collections.defaultdict(set) for sphere_location in sphere: current_sphere[sphere_location.player].add(sphere_location.address) @@ -334,6 +335,9 @@ def precollect_hint(location: Location, auto_status: HintStatus): } AutoWorld.call_all(multiworld, "modify_multidata", multidata) + for key in ("slot_data", "er_hint_data"): + multidata[key] = convert_to_base_types(multidata[key]) + multidata = zlib.compress(pickle.dumps(multidata), 9) with open(os.path.join(temp_dir, f'{outfilebase}.archipelago'), 'wb') as f: diff --git a/MinecraftClient.py b/MinecraftClient.py deleted file mode 100644 index 93385ec5385e..000000000000 --- a/MinecraftClient.py +++ /dev/null @@ -1,344 +0,0 @@ -import argparse -import json -import os -import sys -import re -import atexit -import shutil -from subprocess import Popen -from shutil import copyfile -from time import strftime -import logging - -import requests - -import Utils -from Utils import is_windows - -atexit.register(input, "Press enter to exit.") - -# 1 or more digits followed by m or g, then optional b -max_heap_re = re.compile(r"^\d+[mMgG][bB]?$") - - -def prompt_yes_no(prompt): - yes_inputs = {'yes', 'ye', 'y'} - no_inputs = {'no', 'n'} - while True: - choice = input(prompt + " [y/n] ").lower() - if choice in yes_inputs: - return True - elif choice in no_inputs: - return False - else: - print('Please respond with "y" or "n".') - - -def find_ap_randomizer_jar(forge_dir): - """Create mods folder if needed; find AP randomizer jar; return None if not found.""" - mods_dir = os.path.join(forge_dir, 'mods') - if os.path.isdir(mods_dir): - for entry in os.scandir(mods_dir): - if entry.name.startswith("aprandomizer") and entry.name.endswith(".jar"): - logging.info(f"Found AP randomizer mod: {entry.name}") - return entry.name - return None - else: - os.mkdir(mods_dir) - logging.info(f"Created mods folder in {forge_dir}") - return None - - -def replace_apmc_files(forge_dir, apmc_file): - """Create APData folder if needed; clean .apmc files from APData; copy given .apmc into directory.""" - if apmc_file is None: - return - apdata_dir = os.path.join(forge_dir, 'APData') - copy_apmc = True - if not os.path.isdir(apdata_dir): - os.mkdir(apdata_dir) - logging.info(f"Created APData folder in {forge_dir}") - for entry in os.scandir(apdata_dir): - if entry.name.endswith(".apmc") and entry.is_file(): - if not os.path.samefile(apmc_file, entry.path): - os.remove(entry.path) - logging.info(f"Removed {entry.name} in {apdata_dir}") - else: # apmc already in apdata - copy_apmc = False - if copy_apmc: - copyfile(apmc_file, os.path.join(apdata_dir, os.path.basename(apmc_file))) - logging.info(f"Copied {os.path.basename(apmc_file)} to {apdata_dir}") - - -def read_apmc_file(apmc_file): - from base64 import b64decode - - with open(apmc_file, 'r') as f: - return json.loads(b64decode(f.read())) - - -def update_mod(forge_dir, url: str): - """Check mod version, download new mod from GitHub releases page if needed. """ - ap_randomizer = find_ap_randomizer_jar(forge_dir) - os.path.basename(url) - if ap_randomizer is not None: - logging.info(f"Your current mod is {ap_randomizer}.") - else: - logging.info(f"You do not have the AP randomizer mod installed.") - - if ap_randomizer != os.path.basename(url): - logging.info(f"A new release of the Minecraft AP randomizer mod was found: " - f"{os.path.basename(url)}") - if prompt_yes_no("Would you like to update?"): - old_ap_mod = os.path.join(forge_dir, 'mods', ap_randomizer) if ap_randomizer is not None else None - new_ap_mod = os.path.join(forge_dir, 'mods', os.path.basename(url)) - logging.info("Downloading AP randomizer mod. This may take a moment...") - apmod_resp = requests.get(url) - if apmod_resp.status_code == 200: - with open(new_ap_mod, 'wb') as f: - f.write(apmod_resp.content) - logging.info(f"Wrote new mod file to {new_ap_mod}") - if old_ap_mod is not None: - os.remove(old_ap_mod) - logging.info(f"Removed old mod file from {old_ap_mod}") - else: - logging.error(f"Error retrieving the randomizer mod (status code {apmod_resp.status_code}).") - logging.error(f"Please report this issue on the Archipelago Discord server.") - sys.exit(1) - - -def check_eula(forge_dir): - """Check if the EULA is agreed to, and prompt the user to read and agree if necessary.""" - eula_path = os.path.join(forge_dir, "eula.txt") - if not os.path.isfile(eula_path): - # Create eula.txt - with open(eula_path, 'w') as f: - f.write("#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).\n") - f.write(f"#{strftime('%a %b %d %X %Z %Y')}\n") - f.write("eula=false\n") - with open(eula_path, 'r+') as f: - text = f.read() - if 'false' in text: - # Prompt user to agree to the EULA - logging.info("You need to agree to the Minecraft EULA in order to run the server.") - logging.info("The EULA can be found at https://account.mojang.com/documents/minecraft_eula") - if prompt_yes_no("Do you agree to the EULA?"): - f.seek(0) - f.write(text.replace('false', 'true')) - f.truncate() - logging.info(f"Set {eula_path} to true") - else: - sys.exit(0) - - -def find_jdk_dir(version: str) -> str: - """get the specified versions jdk directory""" - for entry in os.listdir(): - if os.path.isdir(entry) and entry.startswith(f"jdk{version}"): - return os.path.abspath(entry) - - -def find_jdk(version: str) -> str: - """get the java exe location""" - - if is_windows: - jdk = find_jdk_dir(version) - jdk_exe = os.path.join(jdk, "bin", "java.exe") - if os.path.isfile(jdk_exe): - return jdk_exe - else: - jdk_exe = shutil.which(options["minecraft_options"].get("java", "java")) - if not jdk_exe: - raise Exception("Could not find Java. Is Java installed on the system?") - return jdk_exe - - -def download_java(java: str): - """Download Corretto (Amazon JDK)""" - - jdk = find_jdk_dir(java) - if jdk is not None: - print(f"Removing old JDK...") - from shutil import rmtree - rmtree(jdk) - - print(f"Downloading Java...") - jdk_url = f"https://corretto.aws/downloads/latest/amazon-corretto-{java}-x64-windows-jdk.zip" - resp = requests.get(jdk_url) - if resp.status_code == 200: # OK - print(f"Extracting...") - import zipfile - from io import BytesIO - with zipfile.ZipFile(BytesIO(resp.content)) as zf: - zf.extractall() - else: - print(f"Error downloading Java (status code {resp.status_code}).") - print(f"If this was not expected, please report this issue on the Archipelago Discord server.") - if not prompt_yes_no("Continue anyways?"): - sys.exit(0) - - -def install_forge(directory: str, forge_version: str, java_version: str): - """download and install forge""" - - java_exe = find_jdk(java_version) - if java_exe is not None: - print(f"Downloading Forge {forge_version}...") - forge_url = f"https://maven.minecraftforge.net/net/minecraftforge/forge/{forge_version}/forge-{forge_version}-installer.jar" - resp = requests.get(forge_url) - if resp.status_code == 200: # OK - forge_install_jar = os.path.join(directory, "forge_install.jar") - if not os.path.exists(directory): - os.mkdir(directory) - with open(forge_install_jar, 'wb') as f: - f.write(resp.content) - print(f"Installing Forge...") - install_process = Popen([java_exe, "-jar", forge_install_jar, "--installServer", directory]) - install_process.wait() - os.remove(forge_install_jar) - - -def run_forge_server(forge_dir: str, java_version: str, heap_arg: str) -> Popen: - """Run the Forge server.""" - - java_exe = find_jdk(java_version) - if not os.path.isfile(java_exe): - java_exe = "java" # try to fall back on java in the PATH - - heap_arg = max_heap_re.match(heap_arg).group() - if heap_arg[-1] in ['b', 'B']: - heap_arg = heap_arg[:-1] - heap_arg = "-Xmx" + heap_arg - - os_args = "win_args.txt" if is_windows else "unix_args.txt" - args_file = os.path.join(forge_dir, "libraries", "net", "minecraftforge", "forge", forge_version, os_args) - forge_args = [] - with open(args_file) as argfile: - for line in argfile: - forge_args.extend(line.strip().split(" ")) - - args = [java_exe, heap_arg, *forge_args, "-nogui"] - logging.info(f"Running Forge server: {args}") - os.chdir(forge_dir) - return Popen(args) - - -def get_minecraft_versions(version, release_channel="release"): - version_file_endpoint = "https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json" - resp = requests.get(version_file_endpoint) - local = False - if resp.status_code == 200: # OK - try: - data = resp.json() - except requests.exceptions.JSONDecodeError: - logging.warning(f"Unable to fetch version update file, using local version. (status code {resp.status_code}).") - local = True - else: - logging.warning(f"Unable to fetch version update file, using local version. (status code {resp.status_code}).") - local = True - - if local: - with open(Utils.user_path("minecraft_versions.json"), 'r') as f: - data = json.load(f) - else: - with open(Utils.user_path("minecraft_versions.json"), 'w') as f: - json.dump(data, f) - - try: - if version: - return next(filter(lambda entry: entry["version"] == version, data[release_channel])) - else: - return resp.json()[release_channel][0] - except (StopIteration, KeyError): - logging.error(f"No compatible mod version found for client version {version} on \"{release_channel}\" channel.") - if release_channel != "release": - logging.error("Consider switching \"release_channel\" to \"release\" in your Host.yaml file") - else: - logging.error("No suitable mod found on the \"release\" channel. Please Contact us on discord to report this error.") - sys.exit(0) - - -def is_correct_forge(forge_dir) -> bool: - if os.path.isdir(os.path.join(forge_dir, "libraries", "net", "minecraftforge", "forge", forge_version)): - return True - return False - - -if __name__ == '__main__': - Utils.init_logging("MinecraftClient") - parser = argparse.ArgumentParser() - parser.add_argument("apmc_file", default=None, nargs='?', help="Path to an Archipelago Minecraft data file (.apmc)") - parser.add_argument('--install', '-i', dest='install', default=False, action='store_true', - help="Download and install Java and the Forge server. Does not launch the client afterwards.") - parser.add_argument('--release_channel', '-r', dest="channel", type=str, action='store', - help="Specify release channel to use.") - parser.add_argument('--java', '-j', metavar='17', dest='java', type=str, default=False, action='store', - help="specify java version.") - parser.add_argument('--forge', '-f', metavar='1.18.2-40.1.0', dest='forge', type=str, default=False, action='store', - help="specify forge version. (Minecraft Version-Forge Version)") - parser.add_argument('--version', '-v', metavar='9', dest='data_version', type=int, action='store', - help="specify Mod data version to download.") - - args = parser.parse_args() - apmc_file = os.path.abspath(args.apmc_file) if args.apmc_file else None - - # Change to executable's working directory - os.chdir(os.path.abspath(os.path.dirname(sys.argv[0]))) - - options = Utils.get_options() - channel = args.channel or options["minecraft_options"]["release_channel"] - apmc_data = None - data_version = args.data_version or None - - if apmc_file is None and not args.install: - apmc_file = Utils.open_filename('Select APMC file', (('APMC File', ('.apmc',)),)) - - if apmc_file is not None and data_version is None: - apmc_data = read_apmc_file(apmc_file) - data_version = apmc_data.get('client_version', '') - - versions = get_minecraft_versions(data_version, channel) - - forge_dir = options["minecraft_options"]["forge_directory"] - max_heap = options["minecraft_options"]["max_heap_size"] - forge_version = args.forge or versions["forge"] - java_version = args.java or versions["java"] - mod_url = versions["url"] - java_dir = find_jdk_dir(java_version) - - if args.install: - if is_windows: - print("Installing Java") - download_java(java_version) - if not is_correct_forge(forge_dir): - print("Installing Minecraft Forge") - install_forge(forge_dir, forge_version, java_version) - else: - print("Correct Forge version already found, skipping install.") - sys.exit(0) - - if apmc_data is None: - raise FileNotFoundError(f"APMC file does not exist or is inaccessible at the given location ({apmc_file})") - - if is_windows: - if java_dir is None or not os.path.isdir(java_dir): - if prompt_yes_no("Did not find java directory. Download and install java now?"): - download_java(java_version) - java_dir = find_jdk_dir(java_version) - if java_dir is None or not os.path.isdir(java_dir): - raise NotADirectoryError(f"Path {java_dir} does not exist or could not be accessed.") - - if not is_correct_forge(forge_dir): - if prompt_yes_no(f"Did not find forge version {forge_version} download and install it now?"): - install_forge(forge_dir, forge_version, java_version) - if not os.path.isdir(forge_dir): - raise NotADirectoryError(f"Path {forge_dir} does not exist or could not be accessed.") - - if not max_heap_re.match(max_heap): - raise Exception(f"Max heap size {max_heap} in incorrect format. Use a number followed by M or G, e.g. 512M or 2G.") - - update_mod(forge_dir, mod_url) - replace_apmc_files(forge_dir, apmc_file) - check_eula(forge_dir) - server_process = run_forge_server(forge_dir, java_version, max_heap) - server_process.wait() diff --git a/MultiServer.py b/MultiServer.py index bdc6b8c84f1e..f12f327c3f62 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -458,8 +458,12 @@ def _load(self, decoded_obj: dict, game_data_packages: typing.Dict[str, typing.A self.generator_version = Version(*decoded_obj["version"]) clients_ver = decoded_obj["minimum_versions"].get("clients", {}) self.minimum_client_versions = {} + if self.generator_version < Version(0, 6, 2): + min_version = Version(0, 1, 6) + else: + min_version = min_client_version for player, version in clients_ver.items(): - self.minimum_client_versions[player] = max(Version(*version), min_client_version) + self.minimum_client_versions[player] = max(Version(*version), min_version) self.slot_info = decoded_obj["slot_info"] self.games = {slot: slot_info.game for slot, slot_info in self.slot_info.items()} @@ -1826,7 +1830,7 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): ctx.clients[team][slot].append(client) client.version = args['version'] client.tags = args['tags'] - client.no_locations = "TextOnly" in client.tags or "Tracker" in client.tags + client.no_locations = bool(client.tags & _non_game_messages.keys()) # set NoText for old PopTracker clients that predate the tag to save traffic client.no_text = "NoText" in client.tags or ("PopTracker" in client.tags and client.version < (0, 5, 1)) connected_packet = { @@ -1900,7 +1904,7 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): old_tags = client.tags client.tags = args["tags"] if set(old_tags) != set(client.tags): - client.no_locations = 'TextOnly' in client.tags or 'Tracker' in client.tags + client.no_locations = bool(client.tags & _non_game_messages.keys()) client.no_text = "NoText" in client.tags or ( "PopTracker" in client.tags and client.version < (0, 5, 1) ) @@ -1990,9 +1994,14 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict): ctx.save() for slot in concerning_slots: ctx.on_changed_hints(client.team, slot) - + elif cmd == 'StatusUpdate': - update_client_status(ctx, client, args["status"]) + if client.no_locations and args["status"] == ClientStatus.CLIENT_GOAL: + await ctx.send_msgs(client, [{'cmd': 'InvalidPacket', "type": "cmd", + "text": "Trackers can't register Goal Complete", + "original_cmd": cmd}]) + else: + update_client_status(ctx, client, args["status"]) elif cmd == 'Say': if "text" not in args or type(args["text"]) is not str or not args["text"].isprintable(): diff --git a/NetUtils.py b/NetUtils.py index f2ae2a63a056..cc6e917c8800 100644 --- a/NetUtils.py +++ b/NetUtils.py @@ -106,6 +106,27 @@ def _scan_for_TypedTuples(obj: typing.Any) -> typing.Any: return obj +_base_types = str | int | bool | float | None | tuple["_base_types", ...] | dict["_base_types", "base_types"] + + +def convert_to_base_types(obj: typing.Any) -> _base_types: + if isinstance(obj, (tuple, list, set, frozenset)): + return tuple(convert_to_base_types(o) for o in obj) + elif isinstance(obj, dict): + return {convert_to_base_types(key): convert_to_base_types(value) for key, value in obj.items()} + elif obj is None or type(obj) in (str, int, float, bool): + return obj + # unwrap simple types to their base, such as StrEnum + elif isinstance(obj, str): + return str(obj) + elif isinstance(obj, int): + return int(obj) + elif isinstance(obj, float): + return float(obj) + else: + raise Exception(f"Cannot handle {type(obj)}") + + _encode = JSONEncoder( ensure_ascii=False, check_circular=False, diff --git a/OoTClient.py b/OoTClient.py index 6a87b9e72201..571300ed36f5 100644 --- a/OoTClient.py +++ b/OoTClient.py @@ -12,6 +12,7 @@ import Utils from Utils import async_start from worlds import network_data_package +from worlds.oot import OOTWorld from worlds.oot.Rom import Rom, compress_rom_file from worlds.oot.N64Patch import apply_patch_file from worlds.oot.Utils import data_path @@ -280,7 +281,7 @@ async def n64_sync_task(ctx: OoTContext): async def run_game(romfile): - auto_start = Utils.get_options()["oot_options"].get("rom_start", True) + auto_start = OOTWorld.settings.rom_start if auto_start is True: import webbrowser webbrowser.open(romfile) @@ -295,7 +296,7 @@ async def patch_and_run_game(apz5_file): decomp_path = base_name + '-decomp.z64' comp_path = base_name + '.z64' # Load vanilla ROM, patch file, compress ROM - rom_file_name = Utils.get_options()["oot_options"]["rom_file"] + rom_file_name = OOTWorld.settings.rom_file rom = Rom(rom_file_name) sub_file = None diff --git a/Options.py b/Options.py index 6a6bbe5e7794..26e145926edc 100644 --- a/Options.py +++ b/Options.py @@ -24,6 +24,12 @@ import pathlib +def roll_percentage(percentage: int | float) -> bool: + """Roll a percentage chance. + percentage is expected to be in range [0, 100]""" + return random.random() < (float(percentage) / 100) + + class OptionError(ValueError): pass @@ -1019,7 +1025,7 @@ def from_any(cls, data: PlandoTextsFromAnyType) -> Self: if isinstance(data, typing.Iterable): for text in data: if isinstance(text, typing.Mapping): - if random.random() < float(text.get("percentage", 100)/100): + if roll_percentage(text.get("percentage", 100)): at = text.get("at", None) if at is not None: if isinstance(at, dict): @@ -1045,7 +1051,7 @@ def from_any(cls, data: PlandoTextsFromAnyType) -> Self: else: raise OptionError("\"at\" must be a valid string or weighted list of strings!") elif isinstance(text, PlandoText): - if random.random() < float(text.percentage/100): + if roll_percentage(text.percentage): texts.append(text) else: raise Exception(f"Cannot create plando text from non-dictionary type, got {type(text)}") @@ -1169,7 +1175,7 @@ def from_any(cls, data: PlandoConFromAnyType) -> Self: for connection in data: if isinstance(connection, typing.Mapping): percentage = connection.get("percentage", 100) - if random.random() < float(percentage / 100): + if roll_percentage(percentage): entrance = connection.get("entrance", None) if is_iterable_except_str(entrance): entrance = random.choice(sorted(entrance)) @@ -1187,7 +1193,7 @@ def from_any(cls, data: PlandoConFromAnyType) -> Self: percentage )) elif isinstance(connection, PlandoConnection): - if random.random() < float(connection.percentage / 100): + if roll_percentage(connection.percentage): value.append(connection) else: raise Exception(f"Cannot create connection from non-Dict type, got {type(connection)}.") @@ -1292,42 +1298,47 @@ class CommonOptions(metaclass=OptionsMetaProperty): progression_balancing: ProgressionBalancing accessibility: Accessibility - def as_dict(self, - *option_names: str, - casing: typing.Literal["snake", "camel", "pascal", "kebab"] = "snake", - toggles_as_bools: bool = False) -> typing.Dict[str, typing.Any]: + def as_dict( + self, + *option_names: str, + casing: typing.Literal["snake", "camel", "pascal", "kebab"] = "snake", + toggles_as_bools: bool = False, + ) -> dict[str, typing.Any]: """ Returns a dictionary of [str, Option.value] - :param option_names: names of the options to return - :param casing: case of the keys to return. Supports `snake`, `camel`, `pascal`, `kebab` - :param toggles_as_bools: whether toggle options should be output as bools instead of strings + :param option_names: Names of the options to get the values of. + :param casing: Casing of the keys to return. Supports `snake`, `camel`, `pascal`, `kebab`. + :param toggles_as_bools: Whether toggle options should be returned as bools instead of ints. + + :return: A dictionary of each option name to the value of its Option. If the option is an OptionSet, the value + will be returned as a sorted list. """ assert option_names, "options.as_dict() was used without any option names." option_results = {} for option_name in option_names: - if option_name in type(self).type_hints: - if casing == "snake": - display_name = option_name - elif casing == "camel": - split_name = [name.title() for name in option_name.split("_")] - split_name[0] = split_name[0].lower() - display_name = "".join(split_name) - elif casing == "pascal": - display_name = "".join([name.title() for name in option_name.split("_")]) - elif casing == "kebab": - display_name = option_name.replace("_", "-") - else: - raise ValueError(f"{casing} is invalid casing for as_dict. " - "Valid names are 'snake', 'camel', 'pascal', 'kebab'.") - value = getattr(self, option_name).value - if isinstance(value, set): - value = sorted(value) - elif toggles_as_bools and issubclass(type(self).type_hints[option_name], Toggle): - value = bool(value) - option_results[display_name] = value - else: + if option_name not in type(self).type_hints: raise ValueError(f"{option_name} not found in {tuple(type(self).type_hints)}") + + if casing == "snake": + display_name = option_name + elif casing == "camel": + split_name = [name.title() for name in option_name.split("_")] + split_name[0] = split_name[0].lower() + display_name = "".join(split_name) + elif casing == "pascal": + display_name = "".join([name.title() for name in option_name.split("_")]) + elif casing == "kebab": + display_name = option_name.replace("_", "-") + else: + raise ValueError(f"{casing} is invalid casing for as_dict. " + "Valid names are 'snake', 'camel', 'pascal', 'kebab'.") + value = getattr(self, option_name).value + if isinstance(value, set): + value = sorted(value) + elif toggles_as_bools and issubclass(type(self).type_hints[option_name], Toggle): + value = bool(value) + option_results[display_name] = value return option_results @@ -1348,6 +1359,7 @@ class StartInventory(ItemDict): verify_item_name = True display_name = "Start Inventory" rich_text_doc = True + max = 10000 class StartInventoryPool(StartInventory): @@ -1463,6 +1475,133 @@ def verify(self, world: typing.Type[World], player_name: str, plando_options: "P link["item_pool"] = list(pool) +@dataclass(frozen=True) +class PlandoItem: + items: list[str] | dict[str, typing.Any] + locations: list[str] + world: int | str | bool | None | typing.Iterable[str] | set[int] = False + from_pool: bool = True + force: bool | typing.Literal["silent"] = "silent" + count: int | bool | dict[str, int] = False + percentage: int = 100 + + +class PlandoItems(Option[typing.List[PlandoItem]]): + """Generic items plando.""" + default = () + supports_weighting = False + display_name = "Plando Items" + + def __init__(self, value: typing.Iterable[PlandoItem]) -> None: + self.value = list(deepcopy(value)) + super().__init__() + + @classmethod + def from_any(cls, data: typing.Any) -> Option[typing.List[PlandoItem]]: + if not isinstance(data, typing.Iterable): + raise OptionError(f"Cannot create plando items from non-Iterable type, got {type(data)}") + + value: typing.List[PlandoItem] = [] + for item in data: + if isinstance(item, typing.Mapping): + percentage = item.get("percentage", 100) + if not isinstance(percentage, int): + raise OptionError(f"Plando `percentage` has to be int, not {type(percentage)}.") + if not (0 <= percentage <= 100): + raise OptionError(f"Plando `percentage` has to be between 0 and 100 (inclusive) not {percentage}.") + if roll_percentage(percentage): + count = item.get("count", False) + items = item.get("items", []) + if not items: + items = item.get("item", None) # explicitly throw an error here if not present + if not items: + raise OptionError("You must specify at least one item to place items with plando.") + count = 1 + if isinstance(items, str): + items = [items] + elif not isinstance(items, (dict, list)): + raise OptionError(f"Plando 'items' has to be string, list, or " + f"dictionary, not {type(items)}") + locations = item.get("locations", []) + if not locations: + locations = item.get("location", []) + if locations: + count = 1 + else: + locations = ["Everywhere"] + if isinstance(locations, str): + locations = [locations] + if not isinstance(locations, list): + raise OptionError(f"Plando `location` has to be string or list, not {type(locations)}") + world = item.get("world", False) + from_pool = item.get("from_pool", True) + force = item.get("force", "silent") + if not isinstance(from_pool, bool): + raise OptionError(f"Plando 'from_pool' has to be true or false, not {from_pool!r}.") + if not (isinstance(force, bool) or force == "silent"): + raise OptionError(f"Plando `force` has to be true or false or `silent`, not {force!r}.") + value.append(PlandoItem(items, locations, world, from_pool, force, count, percentage)) + elif isinstance(item, PlandoItem): + if roll_percentage(item.percentage): + value.append(item) + else: + raise OptionError(f"Cannot create plando item from non-Dict type, got {type(item)}.") + return cls(value) + + def verify(self, world: typing.Type[World], player_name: str, plando_options: "PlandoOptions") -> None: + if not self.value: + return + from BaseClasses import PlandoOptions + if not (PlandoOptions.items & plando_options): + # plando is disabled but plando options were given so overwrite the options + self.value = [] + logging.warning(f"The plando items module is turned off, " + f"so items for {player_name} will be ignored.") + else: + # filter down item groups + for plando in self.value: + # confirm a valid count + if isinstance(plando.count, dict): + if "min" in plando.count and "max" in plando.count: + if plando.count["min"] > plando.count["max"]: + raise OptionError("Plando cannot have count `min` greater than `max`.") + items_copy = plando.items.copy() + if isinstance(plando.items, dict): + for item in items_copy: + if item in world.item_name_groups: + value = plando.items.pop(item) + group = world.item_name_groups[item] + filtered_items = sorted(group.difference(list(plando.items.keys()))) + if not filtered_items: + raise OptionError(f"Plando `items` contains the group \"{item}\" " + f"and every item in it. This is not allowed.") + if value is True: + for key in filtered_items: + plando.items[key] = True + else: + for key in random.choices(filtered_items, k=value): + plando.items[key] = plando.items.get(key, 0) + 1 + else: + assert isinstance(plando.items, list) # pycharm can't figure out the hinting without the hint + for item in items_copy: + if item in world.item_name_groups: + plando.items.remove(item) + plando.items.extend(sorted(world.item_name_groups[item])) + + @classmethod + def get_option_name(cls, value: list[PlandoItem]) -> str: + return ", ".join(["(%s: %s)" % (item.items, item.locations) for item in value]) #TODO: see what a better way to display would be + + def __getitem__(self, index: typing.SupportsIndex) -> PlandoItem: + return self.value.__getitem__(index) + + def __iter__(self) -> typing.Iterator[PlandoItem]: + yield from self.value + + def __len__(self) -> int: + return len(self.value) + + class Removed(FreeText): """This Option has been Removed.""" rich_text_doc = True @@ -1485,6 +1624,7 @@ class PerGameCommonOptions(CommonOptions): exclude_locations: ExcludeLocations priority_locations: PriorityLocations item_links: ItemLinks + plando_items: PlandoItems @dataclass @@ -1538,6 +1678,7 @@ def get_option_groups(world: typing.Type[World], visibility_level: Visibility = def generate_yaml_templates(target_folder: typing.Union[str, "pathlib.Path"], generate_hidden: bool = True) -> None: import os + from inspect import cleandoc import yaml from jinja2 import Template @@ -1576,19 +1717,21 @@ def yaml_dump_scalar(scalar) -> str: # yaml dump may add end of document marker and newlines. return yaml.dump(scalar).replace("...\n", "").strip() + with open(local_path("data", "options.yaml")) as f: + file_data = f.read() + template = Template(file_data) + for game_name, world in AutoWorldRegister.world_types.items(): if not world.hidden or generate_hidden: option_groups = get_option_groups(world) - with open(local_path("data", "options.yaml")) as f: - file_data = f.read() - res = Template(file_data).render( + + res = template.render( option_groups=option_groups, __version__=__version__, game=game_name, yaml_dump=yaml_dump_scalar, dictify_range=dictify_range, + cleandoc=cleandoc, ) - del file_data - with open(os.path.join(target_folder, get_file_safe_name(game_name) + ".yaml"), "w", encoding="utf-8-sig") as f: f.write(res) diff --git a/README.md b/README.md index c1e89bac7ce2..29b6206a00d8 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ Currently, the following games are supported: * The Legend of Zelda: A Link to the Past * Factorio -* Minecraft * Subnautica * Risk of Rain 2 * The Legend of Zelda: Ocarina of Time @@ -15,7 +14,6 @@ Currently, the following games are supported: * Super Metroid * Secret of Evermore * Final Fantasy -* Rogue Legacy * VVVVVV * Raft * Super Mario 64 @@ -42,7 +40,6 @@ Currently, the following games are supported: * The Messenger * Kingdom Hearts 2 * The Legend of Zelda: Link's Awakening DX -* Clique * Adventure * DLC Quest * Noita @@ -80,6 +77,9 @@ Currently, the following games are supported: * Inscryption * Civilization VI * The Legend of Zelda: The Wind Waker +* Jak and Daxter: The Precursor Legacy +* Super Mario Land 2: 6 Golden Coins +* shapez For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/). Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled diff --git a/Utils.py b/Utils.py index 46a0d106ef85..5697bb162ace 100644 --- a/Utils.py +++ b/Utils.py @@ -139,8 +139,11 @@ def local_path(*path: str) -> str: local_path.cached_path = os.path.dirname(os.path.abspath(sys.argv[0])) else: import __main__ - if hasattr(__main__, "__file__") and os.path.isfile(__main__.__file__): + if globals().get("__file__") and os.path.isfile(__file__): # we are running in a normal Python environment + local_path.cached_path = os.path.dirname(os.path.abspath(__file__)) + elif hasattr(__main__, "__file__") and os.path.isfile(__main__.__file__): + # we are running in a normal Python environment, but AP was imported weirdly local_path.cached_path = os.path.dirname(os.path.abspath(__main__.__file__)) else: # pray @@ -163,6 +166,10 @@ def home_path(*path: str) -> str: os.symlink(home_path.cached_path, legacy_home_path) else: os.makedirs(home_path.cached_path, 0o700, exist_ok=True) + elif sys.platform == 'darwin': + import platformdirs + home_path.cached_path = platformdirs.user_data_dir("Archipelago", False) + os.makedirs(home_path.cached_path, 0o700, exist_ok=True) else: # not implemented home_path.cached_path = local_path() # this will generate the same exceptions we got previously @@ -174,7 +181,7 @@ def user_path(*path: str) -> str: """Returns either local_path or home_path based on write permissions.""" if hasattr(user_path, "cached_path"): pass - elif os.access(local_path(), os.W_OK): + elif os.access(local_path(), os.W_OK) and not (is_macos and is_frozen()): user_path.cached_path = local_path() else: user_path.cached_path = home_path() @@ -223,7 +230,12 @@ def open_file(filename: typing.Union[str, "pathlib.Path"]) -> None: from shutil import which open_command = which("open") if is_macos else (which("xdg-open") or which("gnome-open") or which("kde-open")) assert open_command, "Didn't find program for open_file! Please report this together with system details." - subprocess.call([open_command, filename]) + + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + subprocess.call([open_command, filename], env=env) # from https://gist.github.com/pypt/94d747fe5180851196eb#gistcomment-4015118 with some changes @@ -430,6 +442,7 @@ def find_class(self, module: str, name: str) -> type: if module == "builtins" and name in safe_builtins: return getattr(builtins, name) # used by OptionCounter + # necessary because the actual Options class instances are pickled when transfered to WebHost generation pool if module == "collections" and name == "Counter": return collections.Counter # used by MultiServer -> savegame/multidata @@ -537,6 +550,8 @@ def filter(self, record: logging.LogRecord) -> bool: if add_timestamp: stream_handler.setFormatter(formatter) root_logger.addHandler(stream_handler) + if hasattr(sys.stdout, "reconfigure"): + sys.stdout.reconfigure(encoding="utf-8", errors="replace") # Relay unhandled exceptions to logger. if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified @@ -635,6 +650,8 @@ def get_fuzzy_results(input_word: str, word_list: typing.Collection[str], limit: import jellyfish def get_fuzzy_ratio(word1: str, word2: str) -> float: + if word1 == word2: + return 1.01 return (1 - jellyfish.damerau_levenshtein_distance(word1.lower(), word2.lower()) / max(len(word1), len(word2))) @@ -655,8 +672,10 @@ def get_intended_text(input_text: str, possible_answers) -> typing.Tuple[str, bo picks = get_fuzzy_results(input_text, possible_answers, limit=2) if len(picks) > 1: dif = picks[0][1] - picks[1][1] - if picks[0][1] == 100: + if picks[0][1] == 101: return picks[0][0], True, "Perfect Match" + elif picks[0][1] == 100: + return picks[0][0], True, "Case Insensitive Perfect Match" elif picks[0][1] < 75: return picks[0][0], False, f"Didn't find something that closely matches '{input_text}', " \ f"did you mean '{picks[0][0]}'? ({picks[0][1]}% sure)" @@ -699,25 +718,30 @@ def _mp_open_filename(res: "multiprocessing.Queue[typing.Optional[str]]", *args: res.put(open_filename(*args)) +def _run_for_stdout(*args: str): + env = os.environ + if "LD_LIBRARY_PATH" in env: + env = env.copy() + del env["LD_LIBRARY_PATH"] # exe is a system binary, so reset LD_LIBRARY_PATH + return subprocess.run(args, capture_output=True, text=True, env=env).stdout.split("\n", 1)[0] or None + + def open_filename(title: str, filetypes: typing.Iterable[typing.Tuple[str, typing.Iterable[str]]], suggest: str = "") \ -> typing.Optional[str]: logging.info(f"Opening file input dialog for {title}.") - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_linux: # prefer native dialog from shutil import which kdialog = which("kdialog") if kdialog: k_filters = '|'.join((f'{text} (*{" *".join(ext)})' for (text, ext) in filetypes)) - return run(kdialog, f"--title={title}", "--getopenfilename", suggest or ".", k_filters) + return _run_for_stdout(kdialog, f"--title={title}", "--getopenfilename", suggest or ".", k_filters) zenity = which("zenity") if zenity: z_filters = (f'--file-filter={text} ({", ".join(ext)}) | *{" *".join(ext)}' for (text, ext) in filetypes) selection = (f"--filename={suggest}",) if suggest else () - return run(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) + return _run_for_stdout(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) # fall back to tk try: @@ -751,21 +775,18 @@ def _mp_open_directory(res: "multiprocessing.Queue[typing.Optional[str]]", *args def open_directory(title: str, suggest: str = "") -> typing.Optional[str]: - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_linux: # prefer native dialog from shutil import which kdialog = which("kdialog") if kdialog: - return run(kdialog, f"--title={title}", "--getexistingdirectory", + return _run_for_stdout(kdialog, f"--title={title}", "--getexistingdirectory", os.path.abspath(suggest) if suggest else ".") zenity = which("zenity") if zenity: z_filters = ("--directory",) selection = (f"--filename={os.path.abspath(suggest)}/",) if suggest else () - return run(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) + return _run_for_stdout(zenity, f"--title={title}", "--file-selection", *z_filters, *selection) # fall back to tk try: @@ -792,9 +813,6 @@ def run(*args: str): def messagebox(title: str, text: str, error: bool = False) -> None: - def run(*args: str): - return subprocess.run(args, capture_output=True, text=True).stdout.split("\n", 1)[0] or None - if is_kivy_running(): from kvui import MessageBox MessageBox(title, text, error).open() @@ -805,10 +823,10 @@ def run(*args: str): from shutil import which kdialog = which("kdialog") if kdialog: - return run(kdialog, f"--title={title}", "--error" if error else "--msgbox", text) + return _run_for_stdout(kdialog, f"--title={title}", "--error" if error else "--msgbox", text) zenity = which("zenity") if zenity: - return run(zenity, f"--title={title}", f"--text={text}", "--error" if error else "--info") + return _run_for_stdout(zenity, f"--title={title}", f"--text={text}", "--error" if error else "--info") elif is_windows: import ctypes diff --git a/WebHostLib/__init__.py b/WebHostLib/__init__.py index 9c713419c986..934cc2498d03 100644 --- a/WebHostLib/__init__.py +++ b/WebHostLib/__init__.py @@ -80,10 +80,8 @@ def register(): """Import submodules, triggering their registering on flask routing. Note: initializes worlds subsystem.""" # has automatic patch integration - import worlds.AutoWorld import worlds.Files - app.jinja_env.filters['supports_apdeltapatch'] = lambda game_name: \ - game_name in worlds.Files.AutoPatchRegister.patch_types + app.jinja_env.filters['is_applayercontainer'] = worlds.Files.is_ap_player_container from WebHostLib.customserver import run_server_process # to trigger app routing picking up on it diff --git a/WebHostLib/downloads.py b/WebHostLib/downloads.py index a09ca7017181..388a6dc73cb1 100644 --- a/WebHostLib/downloads.py +++ b/WebHostLib/downloads.py @@ -61,12 +61,7 @@ def download_slot_file(room_id, player_id: int): else: import io - if slot_data.game == "Minecraft": - from worlds.minecraft import mc_update_output - fname = f"AP_{app.jinja_env.filters['suuid'](room_id)}_P{slot_data.player_id}_{slot_data.player_name}.apmc" - data = mc_update_output(slot_data.data, server=app.config['HOST_ADDRESS'], port=room.last_port) - return send_file(io.BytesIO(data), as_attachment=True, download_name=fname) - elif slot_data.game == "Factorio": + if slot_data.game == "Factorio": with zipfile.ZipFile(io.BytesIO(slot_data.data)) as zf: for name in zf.namelist(): if name.endswith("info.json"): diff --git a/WebHostLib/requirements.txt b/WebHostLib/requirements.txt index a9cd33dd6d4d..4e6bf25df038 100644 --- a/WebHostLib/requirements.txt +++ b/WebHostLib/requirements.txt @@ -1,4 +1,4 @@ -flask>=3.1.0 +flask>=3.1.1 werkzeug>=3.1.3 pony>=0.7.19 waitress>=3.0.2 diff --git a/WebHostLib/static/assets/minecraftTracker.js b/WebHostLib/static/assets/minecraftTracker.js deleted file mode 100644 index a698214b8dd6..000000000000 --- a/WebHostLib/static/assets/minecraftTracker.js +++ /dev/null @@ -1,49 +0,0 @@ -window.addEventListener('load', () => { - // Reload tracker every 15 seconds - const url = window.location; - setInterval(() => { - const ajax = new XMLHttpRequest(); - ajax.onreadystatechange = () => { - if (ajax.readyState !== 4) { return; } - - // Create a fake DOM using the returned HTML - const domParser = new DOMParser(); - const fakeDOM = domParser.parseFromString(ajax.responseText, 'text/html'); - - // Update item tracker - document.getElementById('inventory-table').innerHTML = fakeDOM.getElementById('inventory-table').innerHTML; - // Update only counters in the location-table - let counters = document.getElementsByClassName('counter'); - const fakeCounters = fakeDOM.getElementsByClassName('counter'); - for (let i = 0; i < counters.length; i++) { - counters[i].innerHTML = fakeCounters[i].innerHTML; - } - }; - ajax.open('GET', url); - ajax.send(); - }, 15000) - - // Collapsible advancement sections - const categories = document.getElementsByClassName("location-category"); - for (let i = 0; i < categories.length; i++) { - let hide_id = categories[i].id.split('-')[0]; - if (hide_id == 'Total') { - continue; - } - categories[i].addEventListener('click', function() { - // Toggle the advancement list - document.getElementById(hide_id).classList.toggle("hide"); - // Change text of the header - const tab_header = document.getElementById(hide_id+'-header').children[0]; - const orig_text = tab_header.innerHTML; - let new_text; - if (orig_text.includes("â–¼")) { - new_text = orig_text.replace("â–¼", "â–²"); - } - else { - new_text = orig_text.replace("â–²", "â–¼"); - } - tab_header.innerHTML = new_text; - }); - } -}); diff --git a/WebHostLib/static/styles/minecraftTracker.css b/WebHostLib/static/styles/minecraftTracker.css deleted file mode 100644 index 224cdcdc55a0..000000000000 --- a/WebHostLib/static/styles/minecraftTracker.css +++ /dev/null @@ -1,102 +0,0 @@ -#player-tracker-wrapper{ - margin: 0; -} - -#inventory-table{ - border-top: 2px solid #000000; - border-left: 2px solid #000000; - border-right: 2px solid #000000; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding: 3px 3px 10px; - width: 384px; - background-color: #42b149; -} - -#inventory-table td{ - width: 40px; - height: 40px; - text-align: center; - vertical-align: middle; -} - -#inventory-table img{ - height: 100%; - max-width: 40px; - max-height: 40px; - filter: grayscale(100%) contrast(75%) brightness(30%); -} - -#inventory-table img.acquired{ - filter: none; -} - -#inventory-table div.counted-item { - position: relative; -} - -#inventory-table div.item-count { - position: absolute; - color: white; - font-family: "Minecraftia", monospace; - font-weight: bold; - bottom: 0; - right: 0; -} - -#location-table{ - width: 384px; - border-left: 2px solid #000000; - border-right: 2px solid #000000; - border-bottom: 2px solid #000000; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - background-color: #42b149; - padding: 0 3px 3px; - font-family: "Minecraftia", monospace; - font-size: 14px; - cursor: default; -} - -#location-table th{ - vertical-align: middle; - text-align: left; - padding-right: 10px; -} - -#location-table td{ - padding-top: 2px; - padding-bottom: 2px; - line-height: 20px; -} - -#location-table td.counter { - text-align: right; - font-size: 14px; -} - -#location-table td.toggle-arrow { - text-align: right; -} - -#location-table tr#Total-header { - font-weight: bold; -} - -#location-table img{ - height: 100%; - max-width: 30px; - max-height: 30px; -} - -#location-table tbody.locations { - font-size: 12px; -} - -#location-table td.location-name { - padding-left: 16px; -} - -.hide { - display: none; -} diff --git a/WebHostLib/templates/macros.html b/WebHostLib/templates/macros.html index b95b8820a72f..be664274e621 100644 --- a/WebHostLib/templates/macros.html +++ b/WebHostLib/templates/macros.html @@ -26,30 +26,15 @@ {{ patch.game }} {% if patch.data %} - {% if patch.game == "Minecraft" %} - - Download APMC File... - {% elif patch.game == "Factorio" %} - - Download Factorio Mod... - {% elif patch.game == "Kingdom Hearts 2" %} - - Download Kingdom Hearts 2 Mod... - {% elif patch.game == "Ocarina of Time" %} - - Download APZ5 File... - {% elif patch.game == "VVVVVV" and room.seed.slots|length == 1 %} + {% if patch.game == "VVVVVV" and room.seed.slots|length == 1 %} Download APV6 File... {% elif patch.game == "Super Mario 64" and room.seed.slots|length == 1 %} Download APSM64EX File... - {% elif patch.game | supports_apdeltapatch %} + {% elif patch.game | is_applayercontainer(patch.data, patch.player_id) %} Download Patch File... - {% elif patch.game == "Final Fantasy Mystic Quest" %} - - Download APMQ File... {% else %} No file to download for this game. {% endif %} diff --git a/WebHostLib/templates/tracker__Minecraft.html b/WebHostLib/templates/tracker__Minecraft.html deleted file mode 100644 index 248f2778bda1..000000000000 --- a/WebHostLib/templates/tracker__Minecraft.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - {{ player_name }}'s Tracker - - - - - - - {# TODO: Replace this with a proper wrapper for each tracker when developing TrackerAPI. #} -
- Switch To Generic Tracker -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
{{ pearls_count }}
-
-
-
- -
{{ scrap_count }}
-
-
-
- -
{{ shard_count }}
-
-
- - {% for area in checks_done %} - - - - - - {% for location in location_info[area] %} - - - - - {% endfor %} - - {% endfor %} -
{{ area }} {{'â–¼' if area != 'Total'}}{{ checks_done[area] }} / {{ checks_in_area[area] }}
{{ location }}{{ '✔' if location_info[area][location] else '' }}
-
- - diff --git a/WebHostLib/tracker.py b/WebHostLib/tracker.py index 3748de97a4bf..4b92f4b416ba 100644 --- a/WebHostLib/tracker.py +++ b/WebHostLib/tracker.py @@ -706,127 +706,6 @@ def render_ALinkToThePast_tracker(tracker_data: TrackerData, team: int, player: _multiworld_trackers["A Link to the Past"] = render_ALinkToThePast_multiworld_tracker _player_trackers["A Link to the Past"] = render_ALinkToThePast_tracker -if "Minecraft" in network_data_package["games"]: - def render_Minecraft_tracker(tracker_data: TrackerData, team: int, player: int) -> str: - icons = { - "Wooden Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d2/Wooden_Pickaxe_JE3_BE3.png", - "Stone Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c4/Stone_Pickaxe_JE2_BE2.png", - "Iron Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d1/Iron_Pickaxe_JE3_BE2.png", - "Diamond Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/e/e7/Diamond_Pickaxe_JE3_BE3.png", - "Wooden Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d5/Wooden_Sword_JE2_BE2.png", - "Stone Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b1/Stone_Sword_JE2_BE2.png", - "Iron Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/8/8e/Iron_Sword_JE2_BE2.png", - "Diamond Sword": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/4/44/Diamond_Sword_JE3_BE3.png", - "Leather Tunic": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b7/Leather_Tunic_JE4_BE2.png", - "Iron Chestplate": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/31/Iron_Chestplate_JE2_BE2.png", - "Diamond Chestplate": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/e/e0/Diamond_Chestplate_JE3_BE2.png", - "Iron Ingot": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/fc/Iron_Ingot_JE3_BE2.png", - "Block of Iron": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/7e/Block_of_Iron_JE4_BE3.png", - "Brewing Stand": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b3/Brewing_Stand_%28empty%29_JE10.png", - "Ender Pearl": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/f6/Ender_Pearl_JE3_BE2.png", - "Bucket": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/f/fc/Bucket_JE2_BE2.png", - "Bow": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/a/ab/Bow_%28Pull_2%29_JE1_BE1.png", - "Shield": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c6/Shield_JE2_BE1.png", - "Red Bed": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/6/6a/Red_Bed_%28N%29.png", - "Netherite Scrap": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/33/Netherite_Scrap_JE2_BE1.png", - "Flint and Steel": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/9/94/Flint_and_Steel_JE4_BE2.png", - "Enchanting Table": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/31/Enchanting_Table.gif", - "Fishing Rod": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/7f/Fishing_Rod_JE2_BE2.png", - "Campfire": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/9/91/Campfire_JE2_BE2.gif", - "Water Bottle": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/7/75/Water_Bottle_JE2_BE2.png", - "Spyglass": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c1/Spyglass_JE2_BE1.png", - "Dragon Egg Shard": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/3/38/Dragon_Egg_JE4.png", - "Lead": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/1/1f/Lead_JE2_BE2.png", - "Saddle": "https://i.imgur.com/2QtDyR0.png", - "Channeling Book": "https://i.imgur.com/J3WsYZw.png", - "Silk Touch Book": "https://i.imgur.com/iqERxHQ.png", - "Piercing IV Book": "https://i.imgur.com/OzJptGz.png", - } - - minecraft_location_ids = { - "Story": [42073, 42023, 42027, 42039, 42002, 42009, 42010, 42070, - 42041, 42049, 42004, 42031, 42025, 42029, 42051, 42077], - "Nether": [42017, 42044, 42069, 42058, 42034, 42060, 42066, 42076, 42064, 42071, 42021, - 42062, 42008, 42061, 42033, 42011, 42006, 42019, 42000, 42040, 42001, 42015, 42104, 42014], - "The End": [42052, 42005, 42012, 42032, 42030, 42042, 42018, 42038, 42046], - "Adventure": [42047, 42050, 42096, 42097, 42098, 42059, 42055, 42072, 42003, 42109, 42035, 42016, 42020, - 42048, 42054, 42068, 42043, 42106, 42074, 42075, 42024, 42026, 42037, 42045, 42056, 42105, - 42099, 42103, 42110, 42100], - "Husbandry": [42065, 42067, 42078, 42022, 42113, 42107, 42007, 42079, 42013, 42028, 42036, 42108, 42111, - 42112, - 42057, 42063, 42053, 42102, 42101, 42092, 42093, 42094, 42095], - "Archipelago": [42080, 42081, 42082, 42083, 42084, 42085, 42086, 42087, 42088, 42089, 42090, 42091], - } - - display_data = {} - - # Determine display for progressive items - progressive_items = { - "Progressive Tools": 45013, - "Progressive Weapons": 45012, - "Progressive Armor": 45014, - "Progressive Resource Crafting": 45001 - } - progressive_names = { - "Progressive Tools": ["Wooden Pickaxe", "Stone Pickaxe", "Iron Pickaxe", "Diamond Pickaxe"], - "Progressive Weapons": ["Wooden Sword", "Stone Sword", "Iron Sword", "Diamond Sword"], - "Progressive Armor": ["Leather Tunic", "Iron Chestplate", "Diamond Chestplate"], - "Progressive Resource Crafting": ["Iron Ingot", "Iron Ingot", "Block of Iron"] - } - - inventory = tracker_data.get_player_inventory_counts(team, player) - for item_name, item_id in progressive_items.items(): - level = min(inventory[item_id], len(progressive_names[item_name]) - 1) - display_name = progressive_names[item_name][level] - base_name = item_name.split(maxsplit=1)[1].lower().replace(" ", "_") - display_data[base_name + "_url"] = icons[display_name] - - # Multi-items - multi_items = { - "3 Ender Pearls": 45029, - "8 Netherite Scrap": 45015, - "Dragon Egg Shard": 45043 - } - for item_name, item_id in multi_items.items(): - base_name = item_name.split()[-1].lower() - count = inventory[item_id] - if count >= 0: - display_data[base_name + "_count"] = count - - # Victory condition - game_state = tracker_data.get_player_client_status(team, player) - display_data["game_finished"] = game_state == 30 - - # Turn location IDs into advancement tab counts - checked_locations = tracker_data.get_player_checked_locations(team, player) - lookup_name = lambda id: tracker_data.location_id_to_name["Minecraft"][id] - location_info = {tab_name: {lookup_name(id): (id in checked_locations) for id in tab_locations} - for tab_name, tab_locations in minecraft_location_ids.items()} - checks_done = {tab_name: len([id for id in tab_locations if id in checked_locations]) - for tab_name, tab_locations in minecraft_location_ids.items()} - checks_done["Total"] = len(checked_locations) - checks_in_area = {tab_name: len(tab_locations) for tab_name, tab_locations in minecraft_location_ids.items()} - checks_in_area["Total"] = sum(checks_in_area.values()) - - lookup_any_item_id_to_name = tracker_data.item_id_to_name["Minecraft"] - return render_template( - "tracker__Minecraft.html", - inventory=inventory, - icons=icons, - acquired_items={lookup_any_item_id_to_name[id] for id, count in inventory.items() if count > 0}, - player=player, - team=team, - room=tracker_data.room, - player_name=tracker_data.get_player_name(team, player), - saving_second=tracker_data.get_room_saving_second(), - checks_done=checks_done, - checks_in_area=checks_in_area, - location_info=location_info, - **display_data, - ) - - _player_trackers["Minecraft"] = render_Minecraft_tracker - if "Ocarina of Time" in network_data_package["games"]: def render_OcarinaOfTime_tracker(tracker_data: TrackerData, team: int, player: int) -> str: icons = { diff --git a/WebHostLib/upload.py b/WebHostLib/upload.py index 45b26b175eb3..ee4ba6a53e71 100644 --- a/WebHostLib/upload.py +++ b/WebHostLib/upload.py @@ -119,9 +119,9 @@ def upload_zip_to_db(zfile: zipfile.ZipFile, owner=None, meta={"race": False}, s # AP Container elif handler: data = zfile.open(file, "r").read() - patch = handler(BytesIO(data)) - patch.read() - files[patch.player] = data + with zipfile.ZipFile(BytesIO(data)) as container: + player = json.loads(container.open("archipelago.json").read())["player"] + files[player] = data # Spoiler elif file.filename.endswith(".txt"): @@ -135,11 +135,6 @@ def upload_zip_to_db(zfile: zipfile.ZipFile, owner=None, meta={"race": False}, s flash("Could not load multidata. File may be corrupted or incompatible.") multidata = None - # Minecraft - elif file.filename.endswith(".apmc"): - data = zfile.open(file, "r").read() - metadata = json.loads(base64.b64decode(data).decode("utf-8")) - files[metadata["player_id"]] = data # Factorio elif file.filename.endswith(".zip"): diff --git a/data/client.kv b/data/client.kv index 562986cd17a4..ed63df135d24 100644 --- a/data/client.kv +++ b/data/client.kv @@ -24,9 +24,20 @@ : ripple_color: app.theme_cls.primaryColor ripple_duration_in_fast: 0.2 -: - ripple_color: app.theme_cls.primaryColor - ripple_duration_in_fast: 0.2 +: + on_release: app.screens.switch_screens(self) + + MDNavigationItemLabel: + text: root.text + theme_text_color: "Custom" + text_color_active: self.theme_cls.primaryColor + text_color_normal: 1, 1, 1, 1 + # indicator is on icon only for some reason + canvas.before: + Color: + rgba: self.theme_cls.secondaryContainerColor if root.active else self.theme_cls.transparentColor + Rectangle: + size: root.size : adaptive_height: True theme_font_size: "Custom" @@ -222,3 +233,8 @@ spacing: 10 size_hint_y: None height: self.minimum_height +: + valign: "middle" + halign: "center" + text_size: self.width, None + height: self.texture_size[1] diff --git a/data/lua/connector_bizhawk_generic.lua b/data/lua/connector_bizhawk_generic.lua index c2e8f91c0d97..387ca2c6f3b4 100644 --- a/data/lua/connector_bizhawk_generic.lua +++ b/data/lua/connector_bizhawk_generic.lua @@ -365,18 +365,14 @@ request_handlers = { ["PREFERRED_CORES"] = function (req) local res = {} local preferred_cores = client.getconfig().PreferredCores + local systems_enumerator = preferred_cores.Keys:GetEnumerator() res["type"] = "PREFERRED_CORES_RESPONSE" res["value"] = {} - res["value"]["NES"] = preferred_cores.NES - res["value"]["SNES"] = preferred_cores.SNES - res["value"]["GB"] = preferred_cores.GB - res["value"]["GBC"] = preferred_cores.GBC - res["value"]["DGB"] = preferred_cores.DGB - res["value"]["SGB"] = preferred_cores.SGB - res["value"]["PCE"] = preferred_cores.PCE - res["value"]["PCECD"] = preferred_cores.PCECD - res["value"]["SGX"] = preferred_cores.SGX + + while systems_enumerator:MoveNext() do + res["value"][systems_enumerator.Current] = preferred_cores[systems_enumerator.Current] + end return res end, diff --git a/data/lua/connector_ff1.lua b/data/lua/connector_ff1.lua deleted file mode 100644 index afae5d3c81dc..000000000000 --- a/data/lua/connector_ff1.lua +++ /dev/null @@ -1,462 +0,0 @@ -local socket = require("socket") -local json = require('json') -local math = require('math') -require("common") - -local STATE_OK = "Ok" -local STATE_TENTATIVELY_CONNECTED = "Tentatively Connected" -local STATE_INITIAL_CONNECTION_MADE = "Initial Connection Made" -local STATE_UNINITIALIZED = "Uninitialized" - -local ITEM_INDEX = 0x03 -local WEAPON_INDEX = 0x07 -local ARMOR_INDEX = 0x0B - -local goldLookup = { - [0x16C] = 10, - [0x16D] = 20, - [0x16E] = 25, - [0x16F] = 30, - [0x170] = 55, - [0x171] = 70, - [0x172] = 85, - [0x173] = 110, - [0x174] = 135, - [0x175] = 155, - [0x176] = 160, - [0x177] = 180, - [0x178] = 240, - [0x179] = 255, - [0x17A] = 260, - [0x17B] = 295, - [0x17C] = 300, - [0x17D] = 315, - [0x17E] = 330, - [0x17F] = 350, - [0x180] = 385, - [0x181] = 400, - [0x182] = 450, - [0x183] = 500, - [0x184] = 530, - [0x185] = 575, - [0x186] = 620, - [0x187] = 680, - [0x188] = 750, - [0x189] = 795, - [0x18A] = 880, - [0x18B] = 1020, - [0x18C] = 1250, - [0x18D] = 1455, - [0x18E] = 1520, - [0x18F] = 1760, - [0x190] = 1975, - [0x191] = 2000, - [0x192] = 2750, - [0x193] = 3400, - [0x194] = 4150, - [0x195] = 5000, - [0x196] = 5450, - [0x197] = 6400, - [0x198] = 6720, - [0x199] = 7340, - [0x19A] = 7690, - [0x19B] = 7900, - [0x19C] = 8135, - [0x19D] = 9000, - [0x19E] = 9300, - [0x19F] = 9500, - [0x1A0] = 9900, - [0x1A1] = 10000, - [0x1A2] = 12350, - [0x1A3] = 13000, - [0x1A4] = 13450, - [0x1A5] = 14050, - [0x1A6] = 14720, - [0x1A7] = 15000, - [0x1A8] = 17490, - [0x1A9] = 18010, - [0x1AA] = 19990, - [0x1AB] = 20000, - [0x1AC] = 20010, - [0x1AD] = 26000, - [0x1AE] = 45000, - [0x1AF] = 65000 -} - -local extensionConsumableLookup = { - [432] = 0x3C, - [436] = 0x3C, - [440] = 0x3C, - [433] = 0x3D, - [437] = 0x3D, - [441] = 0x3D, - [434] = 0x3E, - [438] = 0x3E, - [442] = 0x3E, - [435] = 0x3F, - [439] = 0x3F, - [443] = 0x3F -} - -local noOverworldItemsLookup = { - [499] = 0x2B, - [500] = 0x12, -} - -local consumableStacks = nil -local prevstate = "" -local curstate = STATE_UNINITIALIZED -local ff1Socket = nil -local frame = 0 - -local isNesHawk = false - - ---Sets correct memory access functions based on whether NesHawk or QuickNES is loaded -local function defineMemoryFunctions() - local memDomain = {} - local domains = memory.getmemorydomainlist() - if domains[1] == "System Bus" then - --NesHawk - isNesHawk = true - memDomain["systembus"] = function() memory.usememorydomain("System Bus") end - memDomain["saveram"] = function() memory.usememorydomain("Battery RAM") end - memDomain["rom"] = function() memory.usememorydomain("PRG ROM") end - elseif domains[1] == "WRAM" then - --QuickNES - memDomain["systembus"] = function() memory.usememorydomain("System Bus") end - memDomain["saveram"] = function() memory.usememorydomain("WRAM") end - memDomain["rom"] = function() memory.usememorydomain("PRG ROM") end - end - return memDomain -end - -local memDomain = defineMemoryFunctions() - -local function StateOKForMainLoop() - memDomain.saveram() - local A = u8(0x102) -- Party Made - local B = u8(0x0FC) - local C = u8(0x0A3) - return A ~= 0x00 and not (A== 0xF2 and B == 0xF2 and C == 0xF2) -end - -function generateLocationChecked() - memDomain.saveram() - data = uRange(0x01FF, 0x101) - data[0] = nil - return data -end - -function setConsumableStacks() - memDomain.rom() - consumableStacks = {} - -- In order shards, tent, cabin, house, heal, pure, soft, ext1, ext2, ext3, ex4 - consumableStacks[0x35] = 1 - consumableStacks[0x36] = u8(0x47400) + 1 - consumableStacks[0x37] = u8(0x47401) + 1 - consumableStacks[0x38] = u8(0x47402) + 1 - consumableStacks[0x39] = u8(0x47403) + 1 - consumableStacks[0x3A] = u8(0x47404) + 1 - consumableStacks[0x3B] = u8(0x47405) + 1 - consumableStacks[0x3C] = u8(0x47406) + 1 - consumableStacks[0x3D] = u8(0x47407) + 1 - consumableStacks[0x3E] = u8(0x47408) + 1 - consumableStacks[0x3F] = u8(0x47409) + 1 -end - -function getEmptyWeaponSlots() - memDomain.saveram() - ret = {} - count = 1 - slot1 = uRange(0x118, 0x4) - slot2 = uRange(0x158, 0x4) - slot3 = uRange(0x198, 0x4) - slot4 = uRange(0x1D8, 0x4) - for i,v in pairs(slot1) do - if v == 0 then - ret[count] = 0x118 + i - count = count + 1 - end - end - for i,v in pairs(slot2) do - if v == 0 then - ret[count] = 0x158 + i - count = count + 1 - end - end - for i,v in pairs(slot3) do - if v == 0 then - ret[count] = 0x198 + i - count = count + 1 - end - end - for i,v in pairs(slot4) do - if v == 0 then - ret[count] = 0x1D8 + i - count = count + 1 - end - end - return ret -end - -function getEmptyArmorSlots() - memDomain.saveram() - ret = {} - count = 1 - slot1 = uRange(0x11C, 0x4) - slot2 = uRange(0x15C, 0x4) - slot3 = uRange(0x19C, 0x4) - slot4 = uRange(0x1DC, 0x4) - for i,v in pairs(slot1) do - if v == 0 then - ret[count] = 0x11C + i - count = count + 1 - end - end - for i,v in pairs(slot2) do - if v == 0 then - ret[count] = 0x15C + i - count = count + 1 - end - end - for i,v in pairs(slot3) do - if v == 0 then - ret[count] = 0x19C + i - count = count + 1 - end - end - for i,v in pairs(slot4) do - if v == 0 then - ret[count] = 0x1DC + i - count = count + 1 - end - end - return ret -end -local function slice (tbl, s, e) - local pos, new = 1, {} - for i = s + 1, e do - new[pos] = tbl[i] - pos = pos + 1 - end - return new -end -function processBlock(block) - local msgBlock = block['messages'] - if msgBlock ~= nil then - for i, v in pairs(msgBlock) do - if itemMessages[i] == nil then - local msg = {TTL=450, message=v, color=0xFFFF0000} - itemMessages[i] = msg - end - end - end - local itemsBlock = block["items"] - memDomain.saveram() - isInGame = u8(0x102) - if itemsBlock ~= nil and isInGame ~= 0x00 then - if consumableStacks == nil then - setConsumableStacks() - end - memDomain.saveram() --- print('ITEMBLOCK: ') --- print(itemsBlock) - itemIndex = u8(ITEM_INDEX) --- print('ITEMINDEX: '..itemIndex) - for i, v in pairs(slice(itemsBlock, itemIndex, #itemsBlock)) do - -- Minus the offset and add to the correct domain - local memoryLocation = v - if v >= 0x100 and v <= 0x114 then - -- This is a key item - memoryLocation = memoryLocation - 0x0E0 - wU8(memoryLocation, 0x01) - elseif v >= 0x1E0 and v <= 0x1F2 then - -- This is a movement item - -- Minus Offset (0x100) - movement offset (0xE0) - memoryLocation = memoryLocation - 0x1E0 - -- Canal is a flipped bit - if memoryLocation == 0x0C then - wU8(memoryLocation, 0x00) - else - wU8(memoryLocation, 0x01) - end - elseif v >= 0x1F3 and v <= 0x1F4 then - -- NoOverworld special items - memoryLocation = noOverworldItemsLookup[v] - wU8(memoryLocation, 0x01) - elseif v >= 0x16C and v <= 0x1AF then - -- This is a gold item - amountToAdd = goldLookup[v] - biggest = u8(0x01E) - medium = u8(0x01D) - smallest = u8(0x01C) - currentValue = 0x10000 * biggest + 0x100 * medium + smallest - newValue = currentValue + amountToAdd - newBiggest = math.floor(newValue / 0x10000) - newMedium = math.floor(math.fmod(newValue, 0x10000) / 0x100) - newSmallest = math.floor(math.fmod(newValue, 0x100)) - wU8(0x01E, newBiggest) - wU8(0x01D, newMedium) - wU8(0x01C, newSmallest) - elseif v >= 0x115 and v <= 0x11B then - -- This is a regular consumable OR a shard - -- Minus Offset (0x100) + item offset (0x20) - memoryLocation = memoryLocation - 0x0E0 - currentValue = u8(memoryLocation) - amountToAdd = consumableStacks[memoryLocation] - if currentValue < 99 then - wU8(memoryLocation, currentValue + amountToAdd) - end - elseif v >= 0x1B0 and v <= 0x1BB then - -- This is an extension consumable - memoryLocation = extensionConsumableLookup[v] - currentValue = u8(memoryLocation) - amountToAdd = consumableStacks[memoryLocation] - if currentValue < 99 then - value = currentValue + amountToAdd - if value > 99 then - value = 99 - end - wU8(memoryLocation, value) - end - end - end - if #itemsBlock > itemIndex then - wU8(ITEM_INDEX, #itemsBlock) - end - - memDomain.saveram() - weaponIndex = u8(WEAPON_INDEX) - emptyWeaponSlots = getEmptyWeaponSlots() - lastUsedWeaponIndex = weaponIndex --- print('WEAPON_INDEX: '.. weaponIndex) - memDomain.saveram() - for i, v in pairs(slice(itemsBlock, weaponIndex, #itemsBlock)) do - if v >= 0x11C and v <= 0x143 then - -- Minus the offset and add to the correct domain - local itemValue = v - 0x11B - if #emptyWeaponSlots > 0 then - slot = table.remove(emptyWeaponSlots, 1) - wU8(slot, itemValue) - lastUsedWeaponIndex = weaponIndex + i - else - break - end - end - end - if lastUsedWeaponIndex ~= weaponIndex then - wU8(WEAPON_INDEX, lastUsedWeaponIndex) - end - memDomain.saveram() - armorIndex = u8(ARMOR_INDEX) - emptyArmorSlots = getEmptyArmorSlots() - lastUsedArmorIndex = armorIndex --- print('ARMOR_INDEX: '.. armorIndex) - memDomain.saveram() - for i, v in pairs(slice(itemsBlock, armorIndex, #itemsBlock)) do - if v >= 0x144 and v <= 0x16B then - -- Minus the offset and add to the correct domain - local itemValue = v - 0x143 - if #emptyArmorSlots > 0 then - slot = table.remove(emptyArmorSlots, 1) - wU8(slot, itemValue) - lastUsedArmorIndex = armorIndex + i - else - break - end - end - end - if lastUsedArmorIndex ~= armorIndex then - wU8(ARMOR_INDEX, lastUsedArmorIndex) - end - end -end - -function receive() - l, e = ff1Socket:receive() - if e == 'closed' then - if curstate == STATE_OK then - print("Connection closed") - end - curstate = STATE_UNINITIALIZED - return - elseif e == 'timeout' then - print("timeout") - return - elseif e ~= nil then - print(e) - curstate = STATE_UNINITIALIZED - return - end - processBlock(json.decode(l)) - - -- Determine Message to send back - memDomain.rom() - local playerName = uRange(0x7BCBF, 0x41) - playerName[0] = nil - local retTable = {} - retTable["playerName"] = playerName - if StateOKForMainLoop() then - retTable["locations"] = generateLocationChecked() - end - msg = json.encode(retTable).."\n" - local ret, error = ff1Socket:send(msg) - if ret == nil then - print(error) - elseif curstate == STATE_INITIAL_CONNECTION_MADE then - curstate = STATE_TENTATIVELY_CONNECTED - elseif curstate == STATE_TENTATIVELY_CONNECTED then - print("Connected!") - itemMessages["(0,0)"] = {TTL=240, message="Connected", color="green"} - curstate = STATE_OK - end -end - -function main() - if not checkBizHawkVersion() then - return - end - server, error = socket.bind('localhost', 52980) - - while true do - gui.drawEllipse(248, 9, 6, 6, "Black", "Yellow") - frame = frame + 1 - drawMessages() - if not (curstate == prevstate) then - -- console.log("Current state: "..curstate) - prevstate = curstate - end - if (curstate == STATE_OK) or (curstate == STATE_INITIAL_CONNECTION_MADE) or (curstate == STATE_TENTATIVELY_CONNECTED) then - if (frame % 60 == 0) then - gui.drawEllipse(248, 9, 6, 6, "Black", "Blue") - receive() - else - gui.drawEllipse(248, 9, 6, 6, "Black", "Green") - end - elseif (curstate == STATE_UNINITIALIZED) then - gui.drawEllipse(248, 9, 6, 6, "Black", "White") - if (frame % 60 == 0) then - gui.drawEllipse(248, 9, 6, 6, "Black", "Yellow") - - drawText(5, 8, "Waiting for client", 0xFFFF0000) - drawText(5, 32, "Please start FF1Client.exe", 0xFFFF0000) - - -- Advance so the messages are drawn - emu.frameadvance() - server:settimeout(2) - print("Attempting to connect") - local client, timeout = server:accept() - if timeout == nil then - -- print('Initial Connection Made') - curstate = STATE_INITIAL_CONNECTION_MADE - ff1Socket = client - ff1Socket:settimeout(0) - end - end - end - emu.frameadvance() - end -end - -main() diff --git a/data/lua/connector_mmbn3.lua b/data/lua/connector_mmbn3.lua index fce38a4c1102..c89f428fe511 100644 --- a/data/lua/connector_mmbn3.lua +++ b/data/lua/connector_mmbn3.lua @@ -477,7 +477,7 @@ function main() elseif (curstate == STATE_UNINITIALIZED) then -- If we're uninitialized, attempt to make the connection. if (frame % 120 == 0) then - server:settimeout(2) + server:settimeout(120) local client, timeout = server:accept() if timeout == nil then print('Initial Connection Made') diff --git a/data/mcicon.ico b/data/mcicon.ico deleted file mode 100644 index 3df0be06f8b0..000000000000 Binary files a/data/mcicon.ico and /dev/null differ diff --git a/data/options.yaml b/data/options.yaml index 09bfcdcec1f6..3fbe25a9211f 100644 --- a/data/options.yaml +++ b/data/options.yaml @@ -51,10 +51,9 @@ requires: {%- for option_key, option in group_options.items() %} {{ option_key }}: {%- if option.__doc__ %} - # {{ option.__doc__ + # {{ cleandoc(option.__doc__) | trim - | replace('\n\n', '\n \n') - | replace('\n ', '\n# ') + | replace('\n', '\n# ') | indent(4, first=False) }} {%- endif -%} diff --git a/data/sprites/ladx/Bowwow.bdiff b/data/sprites/ladx/Bowwow.bdiff deleted file mode 100644 index bdfe9f42f23b..000000000000 Binary files a/data/sprites/ladx/Bowwow.bdiff and /dev/null differ diff --git a/data/sprites/ladx/Bunny.bdiff b/data/sprites/ladx/Bunny.bdiff deleted file mode 100644 index 848829d0306e..000000000000 Binary files a/data/sprites/ladx/Bunny.bdiff and /dev/null differ diff --git a/data/sprites/ladx/Luigi.bdiff b/data/sprites/ladx/Luigi.bdiff deleted file mode 100644 index 1897a65d0146..000000000000 Binary files a/data/sprites/ladx/Luigi.bdiff and /dev/null differ diff --git a/data/sprites/ladx/Mario.bdiff b/data/sprites/ladx/Mario.bdiff deleted file mode 100644 index 389fa94ab128..000000000000 Binary files a/data/sprites/ladx/Mario.bdiff and /dev/null differ diff --git a/data/sprites/ladx/Richard.bdiff b/data/sprites/ladx/Richard.bdiff deleted file mode 100644 index a244d7026b42..000000000000 Binary files a/data/sprites/ladx/Richard.bdiff and /dev/null differ diff --git a/data/sprites/ladx/Tarin.bdiff b/data/sprites/ladx/Tarin.bdiff deleted file mode 100644 index e30e2d1f3c0f..000000000000 Binary files a/data/sprites/ladx/Tarin.bdiff and /dev/null differ diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index dee8a6fd25d2..3104200a6c9d 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -48,9 +48,6 @@ # Civilization VI /worlds/civ6/ @hesto2 -# Clique -/worlds/clique/ @ThePhar - # Dark Souls III /worlds/dark_souls_3/ @Marechal-L @nex3 @@ -87,6 +84,9 @@ # Inscryption /worlds/inscryption/ @DrBibop @Glowbuzz +# Jak and Daxter: The Precursor Legacy +/worlds/jakanddaxter/ @massimilianodelliubaldini + # Kirby's Dream Land 3 /worlds/kdl3/ @Silvris @@ -118,9 +118,6 @@ # The Messenger /worlds/messenger/ @alwaysintreble -# Minecraft -/worlds/minecraft/ @KonoTyran @espeon65536 - # Mega Man 2 /worlds/mm2/ @Silvris @@ -148,15 +145,15 @@ # Raft /worlds/raft/ @SunnyBat -# Rogue Legacy -/worlds/rogue_legacy/ @ThePhar - # Risk of Rain 2 /worlds/ror2/ @kindasneaki # Saving Princess /worlds/saving_princess/ @LeonarthCG +# shapez +/worlds/shapez/ @BlastSlimey + # Shivers /worlds/shivers/ @GodlFire @korydondzila @@ -175,6 +172,9 @@ # Super Mario 64 /worlds/sm64ex/ @N00byKing +# Super Mario Land 2: 6 Golden Coins +/worlds/marioland2/ @Alchav + # Super Mario World /worlds/smw/ @PoryGone @@ -232,7 +232,7 @@ ## Active Unmaintained Worlds # The following worlds in this repo are currently unmaintained, but currently still work in core. If any update breaks -# compatibility, these worlds may be moved to `worlds_disabled`. If you are interested in stepping up as maintainer for +# compatibility, these worlds may be deleted. If you are interested in stepping up as maintainer for # any of these worlds, please review `/docs/world maintainer.md` documentation. # Final Fantasy (1) @@ -241,15 +241,6 @@ # Ocarina of Time # /worlds/oot/ -## Disabled Unmaintained Worlds - -# The following worlds in this repo are currently unmaintained and disabled as they do not work in core. If you are -# interested in stepping up as maintainer for any of these worlds, please review `/docs/world maintainer.md` -# documentation. - -# Ori and the Blind Forest -# /worlds_disabled/oribf/ - ################### ## Documentation ## ################### diff --git a/docs/apworld_dev_faq.md b/docs/apworld_dev_faq.md index 6d7d23b488d1..6e1c102c6a36 100644 --- a/docs/apworld_dev_faq.md +++ b/docs/apworld_dev_faq.md @@ -8,7 +8,11 @@ including [Contributing](contributing.md), [Adding Games](), an ### My game has a restrictive start that leads to fill errors -Hint to the Generator that an item needs to be in sphere one with local_early_items. Here, `1` represents the number of "Sword" items to attempt to place in sphere one. +A "restrictive start" here means having a combination of very few sphere 1 locations and potentially requiring more +than one item to get a player to sphere 2. + +One way to fix this is to hint to the Generator that an item needs to be in sphere one with local_early_items. +Here, `1` represents the number of "Sword" items the Generator will attempt to place in sphere one. ```py early_item_name = "Sword" self.multiworld.local_early_items[self.player][early_item_name] = 1 @@ -18,15 +22,19 @@ Some alternative ways to try to fix this problem are: * Add more locations to sphere one of your world, potentially only when there would be a restrictive start * Pre-place items yourself, such as during `create_items` * Put items into the player's starting inventory using `push_precollected` -* Raise an exception, such as an `OptionError` during `generate_early`, to disallow options that would lead to a restrictive start +* Raise an exception, such as an `OptionError` during `generate_early`, to disallow options that would lead to a + restrictive start --- -### I have multiple settings that change the item/location pool counts and need to balance them out +### I have multiple options that change the item/location pool counts and need to make sure I am not submitting more/fewer items than locations -In an ideal situation your system for producing locations and items wouldn't leave any opportunity for them to be unbalanced. But in real, complex situations, that might be unfeasible. +In an ideal situation your system for producing locations and items wouldn't leave any opportunity for them to be +unbalanced. But in real, complex situations, that might be unfeasible. -If that's the case, you can create extra filler based on the difference between your unfilled locations and your itempool by comparing [get_unfilled_locations](https://github.com/ArchipelagoMW/Archipelago/blob/main/BaseClasses.py#:~:text=get_unfilled_locations) to your list of items to submit +If that's the case, you can create extra filler based on the difference between your unfilled locations and your +itempool by comparing [get_unfilled_locations](https://github.com/ArchipelagoMW/Archipelago/blob/main/BaseClasses.py#:~:text=get_unfilled_locations) +to your list of items to submit Note: to use self.create_filler(), self.get_filler_item_name() should be defined to only return valid filler item names ```py @@ -39,7 +47,8 @@ for _ in range(total_locations - len(item_pool)): self.multiworld.itempool += item_pool ``` -A faster alternative to the `for` loop would be to use a [list comprehension](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions): +A faster alternative to the `for` loop would be to use a +[list comprehension](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions): ```py item_pool += [self.create_filler() for _ in range(total_locations - len(item_pool))] ``` @@ -48,24 +57,39 @@ item_pool += [self.create_filler() for _ in range(total_locations - len(item_poo ### I learned about indirect conditions in the world API document, but I want to know more. What are they and why are they necessary? -The world API document mentions how to use `multiworld.register_indirect_condition` to register indirect conditions and **when** you should use them, but not *how* they work and *why* they are necessary. This is because the explanation is quite complicated. +The world API document mentions how to use `multiworld.register_indirect_condition` to register indirect conditions and +**when** you should use them, but not *how* they work and *why* they are necessary. This is because the explanation is +quite complicated. -Region sweep (the algorithm that determines which regions are reachable) is a Breadth-First Search of the region graph. It starts from the origin region, checks entrances one by one, and adds newly reached regions and their entrances to the queue until there is nothing more to check. +Region sweep (the algorithm that determines which regions are reachable) is a Breadth-First Search of the region graph. +It starts from the origin region, checks entrances one by one, and adds newly reached regions and their entrances to +the queue until there is nothing more to check. -For performance reasons, AP only checks every entrance once. However, if an entrance's access_rule depends on region access, then the following may happen: -1. The entrance is checked and determined to be nontraversable because the region in its access_rule hasn't been reached yet during the graph search. +For performance reasons, AP only checks every entrance once. However, if an entrance's access_rule depends on region +access, then the following may happen: +1. The entrance is checked and determined to be nontraversable because the region in its access_rule hasn't been + reached yet during the graph search. 2. Then, the region in its access_rule is determined to be reachable. This entrance *would* be in logic if it were rechecked, but it won't be rechecked this cycle. -To account for this case, AP would have to recheck all entrances every time a new region is reached until no new regions are reached. - -An indirect condition is how you can manually define that a specific entrance needs to be rechecked during region sweep if a specific region is reached during it. -This keeps most of the performance upsides. Even in a game making heavy use of indirect conditions (ex: The Witness), using them is significantly faster than just "rechecking each entrance until nothing new is found". -The reason entrance access rules using `location.can_reach` and `entrance.can_reach` are also affected is because they call `region.can_reach` on their respective parent/source region. - -We recognize it can feel like a trap since it will not alert you when you are missing an indirect condition, and that some games have very complex access rules. -As of [PR #3682 (Core: Region handling customization)](https://github.com/ArchipelagoMW/Archipelago/pull/3682) being merged, it is possible for a world to opt out of indirect conditions entirely, instead using the system of checking each entrance whenever a region has been reached, although this does come with a performance cost. -Opting out of using indirect conditions should only be used by games that *really* need it. For most games, it should be reasonable to know all entrance → region dependencies, making indirect conditions preferred because they are much faster. +To account for this case, AP would have to recheck all entrances every time a new region is reached until no new +regions are reached. + +An indirect condition is how you can manually define that a specific entrance needs to be rechecked during region sweep +if a specific region is reached during it. +This keeps most of the performance upsides. Even in a game making heavy use of indirect conditions (ex: The Witness), +using them is significantly faster than just "rechecking each entrance until nothing new is found". +The reason entrance access rules using `location.can_reach` and `entrance.can_reach` are also affected is because they +call `region.can_reach` on their respective parent/source region. + +We recognize it can feel like a trap since it will not alert you when you are missing an indirect condition, +and that some games have very complex access rules. +As of [PR #3682 (Core: Region handling customization)](https://github.com/ArchipelagoMW/Archipelago/pull/3682) +being merged, it is possible for a world to opt out of indirect conditions entirely, instead using the system of +checking each entrance whenever a region has been reached, although this does come with a performance cost. +Opting out of using indirect conditions should only be used by games that *really* need it. For most games, it should +be reasonable to know all entrance → region dependencies, making indirect conditions preferred because they are +much faster. --- @@ -85,3 +109,34 @@ Common situations where this can happen include: Also, consider using the `options.as_dict("option_name", "option_two")` helper. * Using enums as Location/Item names in the datapackage. When building out `location_name_to_id` and `item_name_to_id`, make sure that you are not using your enum class for either the names or ids in these mappings. + +--- + +### Some locations are technically possible to check with few or no items, but they'd be very tedious or frustrating. How do worlds deal with this? + +Sometimes the game can be modded to skip these locations or make them less tedious. But when this issue is due to a fundamental aspect of the game, then the general answer is "soft logic" (and its subtypes like "combat logic", "money logic", etc.). For example: you can logically require that a player have several helpful items before fighting the final boss, even if a skilled player technically needs no items to beat it. Randomizer logic should describe what's *fun* rather than what's technically possible. + +Concrete examples of soft logic include: +- Defeating a boss might logically require health upgrades, damage upgrades, certain weapons, etc. that aren't strictly necessary. +- Entering a high-level area might logically require access to enough other parts of the game that checking other locations should naturally get the player to the soft-required level. +- Buying expensive shop items might logically require access to a place where you can quickly farm money, or logically require access to enough parts of the game that checking other locations should naturally generate enough money without grinding. + +Remember that all items referenced by logic (however hard or soft) must be `progression`. Since you typically don't want to turn a ton of `filler` items into `progression` just for this, it's common to e.g. write money logic using only the rare "$100" item, so the dozens of "$1" and "$10" items in your world can remain `filler`. + +--- + +### What if my game has "missable" or "one-time-only" locations or region connections? + +Archipelago logic assumes that once a region or location becomes reachable, it stays reachable forever, no matter what +the player does in-game. Slightly more formally: Receiving an AP item must never cause a region connection or location +to "go out of logic" (become unreachable when it was previously reachable), and receiving AP items is the only kind of +state change that AP logic acknowledges. No other actions or events can change reachability. + +So when the game itself does not follow this assumption, the options are: +- Modify the game to make that location/connection repeatable +- If there are both missable and repeatable ways to check the location/traverse the connection, then write logic for + only the repeatable ways +- Don't generate the missable location/connection at all + - For connections, any logical regions will still need to be reachable through other, *repeatable* connections + - For locations, this may require game changes to remove the vanilla item if it affects logic +- Decide that resetting the save file is part of the game's logic, and warn players about that diff --git a/docs/network diagram/network diagram.md b/docs/network diagram/network diagram.md index d660e8889efa..2d0a1174f545 100644 --- a/docs/network diagram/network diagram.md +++ b/docs/network diagram/network diagram.md @@ -117,12 +117,6 @@ flowchart LR %% Java Based Games subgraph Java JM[Mod with Archipelago.MultiClient.Java] - subgraph Minecraft - MCS[Minecraft Forge Server] - JMC[Any Java Minecraft Clients] - MCS <-- TCP --> JMC - end - JM <-- Forge Mod Loader --> MCS end AS <-- WebSockets --> JM @@ -131,10 +125,8 @@ flowchart LR NM[Mod with Archipelago.MultiClient.Net] subgraph FNA/XNA TS[Timespinner] - RL[Rogue Legacy] end NM <-- TsRandomizer --> TS - NM <-- RogueLegacyRandomizer --> RL subgraph Unity ROR[Risk of Rain 2] SN[Subnautica] @@ -183,4 +175,4 @@ flowchart LR FMOD <--> FMAPI end CC <-- Integrated --> FC -``` \ No newline at end of file +``` diff --git a/docs/network protocol.md b/docs/network protocol.md index 6688c101ab4b..8c07ff10fdf6 100644 --- a/docs/network protocol.md +++ b/docs/network protocol.md @@ -231,11 +231,11 @@ Sent to clients after a client requested this message be sent to them, more info Sent to clients if the server caught a problem with a packet. This only occurs for errors that are explicitly checked for. #### Arguments -| Name | Type | Notes | -| ---- | ---- | ----- | -| type | str | The [PacketProblemType](#PacketProblemType) that was detected in the packet. | -| original_cmd | Optional[str] | The `cmd` argument of the faulty packet, will be `None` if the `cmd` failed to be parsed. | -| text | str | A descriptive message of the problem at hand. | +| Name | Type | Notes | +| ---- |-------------| ----- | +| type | str | The [PacketProblemType](#PacketProblemType) that was detected in the packet. | +| original_cmd | str \| None | The `cmd` argument of the faulty packet, will be `None` if the `cmd` failed to be parsed. | +| text | str | A descriptive message of the problem at hand. | ##### PacketProblemType `PacketProblemType` indicates the type of problem that was detected in the faulty packet, the known problem types are below but others may be added in the future. @@ -551,14 +551,14 @@ In JSON this may look like: Message nodes sent along with [PrintJSON](#PrintJSON) packet to be reconstructed into a legible message. The nodes are intended to be read in the order they are listed in the packet. ```python -from typing import TypedDict, Optional +from typing import TypedDict class JSONMessagePart(TypedDict): - type: Optional[str] - text: Optional[str] - color: Optional[str] # only available if type is a color - flags: Optional[int] # only available if type is an item_id or item_name - player: Optional[int] # only available if type is either item or location - hint_status: Optional[HintStatus] # only available if type is hint_status + type: str | None + text: str | None + color: str | None # only available if type is a color + flags: int | None # only available if type is an item_id or item_name + player: int | None # only available if type is either item or location + hint_status: HintStatus | None # only available if type is hint_status ``` `type` is used to denote the intent of the message part. This can be used to indicate special information which may be rendered differently depending on client. How these types are displayed in Archipelago's ALttP client is not the end-all be-all. Other clients may choose to interpret and display these messages differently. diff --git a/docs/options api.md b/docs/options api.md index 037b9edb8711..c9b7c422fec8 100644 --- a/docs/options api.md +++ b/docs/options api.md @@ -333,7 +333,7 @@ within the world. ### TextChoice Like choice allows you to predetermine options and has all of the same comparison methods and handling. Also accepts any user defined string as a valid option, so will either need to be validated by adding a validation step to the option -class or within world, if necessary. Value for this class is `Union[str, int]` so if you need the value at a specified +class or within world, if necessary. Value for this class is `str | int` so if you need the value at a specified point, `self.options.my_option.current_key` will always return a string. ### PlandoBosses diff --git a/docs/settings api.md b/docs/settings api.md index bfc642d4b50c..ef1f20d09815 100644 --- a/docs/settings api.md +++ b/docs/settings api.md @@ -102,17 +102,16 @@ In worlds, this should only be used for the top level to avoid issues when upgra ### Bool -Since `bool` can not be subclassed, use the `settings.Bool` helper in a `typing.Union` to get a comment in host.yaml. +Since `bool` can not be subclassed, use the `settings.Bool` helper in a union to get a comment in host.yaml. ```python import settings -import typing class MySettings(settings.Group): class MyBool(settings.Bool): """Doc string""" - my_value: typing.Union[MyBool, bool] = True + my_value: MyBool | bool = True ``` ### UserFilePath @@ -134,15 +133,15 @@ Checks the file against [md5s](#md5s) by default. Resolves to an executable (varying file extension based on platform) -#### description: Optional\[str\] +#### description: str | None Human-readable name to use in file browser -#### copy_to: Optional\[str\] +#### copy_to: str | None Instead of storing the path, copy the file. -#### md5s: List[Union[str, bytes]] +#### md5s: list[str | bytes] Provide md5 hashes as hex digests or raw bytes for automatic validation. diff --git a/docs/style.md b/docs/style.md index 81853f41725b..5333155db96a 100644 --- a/docs/style.md +++ b/docs/style.md @@ -29,6 +29,10 @@ * New classes, attributes, and methods in core code should have docstrings that follow [reST style](https://peps.python.org/pep-0287/). * Worlds that do not follow PEP8 should still have a consistent style across its files to make reading easier. +* [Match statements](https://docs.python.org/3/tutorial/controlflow.html#tut-match) + may be used instead of `if`-`elif` if they result in nicer code, or they actually use pattern matching. + Beware of the performance: they are not `goto`s, but `if`-`elif` under the hood, and you may have less control. When + in doubt, just don't use it. ## Markdown diff --git a/docs/tests.md b/docs/tests.md index a9a1962685b9..78cedbc514d5 100644 --- a/docs/tests.md +++ b/docs/tests.md @@ -11,8 +11,13 @@ found in the [general test directory](/test/general). ## Defining World Tests In order to run tests from your world, you will need to create a `test` package within your world package. This can be -done by creating a `test` directory with a file named `__init__.py` inside it inside your world. By convention, a base -for your world tests can be created in this file that you can then import into other modules. +done by creating a `test` directory inside your world with an (empty) `__init__.py` inside it. By convention, a base +for your world tests can be created in `bases.py` or any file that does not start with `test`, that you can then import +into other modules. All tests should be defined in files named `test_*.py` (all lower case) and be member functions +(named `test_*`) of classes (named `Test*` or `*Test`) that inherit from `unittest.TestCase` or a test base. + +Defining anything inside `test/__init__.py` is deprecated. Defining TestBase there was previously the norm; however, +it complicates test discovery because some worlds also put actual tests into `__init__.py`. ### WorldTestBase @@ -21,7 +26,7 @@ interactions in the world interact as expected, you will want to use the [WorldT comes with the basics for test setup as well as a few preloaded tests that most worlds might want to check on varying options combinations. -Example `/worlds//test/__init__.py`: +Example `/worlds//test/bases.py`: ```python from test.bases import WorldTestBase @@ -49,7 +54,7 @@ with `test_`. Example `/worlds//test/test_chest_access.py`: ```python -from . import MyGameTestBase +from .bases import MyGameTestBase class TestChestAccess(MyGameTestBase): @@ -119,8 +124,12 @@ variable to keep all the benefits of the test framework while not running the ma #### Using Pycharm In PyCharm, running all tests can be done by right-clicking the root test directory and selecting Run 'Archipelago Unittests'. -Unless you configured PyCharm to use pytest as a test runner, you may get import failures. To solve this, edit the run configuration, -and set the working directory to the Archipelago directory which contains all the project files. +If you have never previously run ModuleUpdate.py, then you will need to do this once before the tests will run. +You can run ModuleUpdate.py by right-clicking ModuleUpdate.py and selecting `Run 'ModuleUpdate'`. +After running ModuleUpdate.py you may still get a `ModuleNotFoundError: No module named 'flask'` for the webhost tests. +If this happens, run WebHost.py by right-clicking it and selecting `Run 'WebHost'`. Make sure to press enter when prompted. +Unless you configured PyCharm to use pytest as a test runner, you may get import failures. To solve this, +edit the run configuration, and set the working directory to the Archipelago directory which contains all the project files. If you only want to run your world's defined tests, repeat the steps for the test directory within your world. Your working directory should be the directory of your world in the worlds directory and the script should be the diff --git a/docs/world api.md b/docs/world api.md index 013b02cc2076..677b1636e6be 100644 --- a/docs/world api.md +++ b/docs/world api.md @@ -258,31 +258,6 @@ another flag like "progression", it means "an especially useful progression item * `progression_skip_balancing`: the combination of `progression` and `skip_balancing`, i.e., a progression item that will not be moved around by progression balancing; used, e.g., for currency or tokens, to not flood early spheres -### Events - -An Event is a special combination of a Location and an Item, with both having an `id` of `None`. These can be used to -track certain logic interactions, with the Event Item being required for access in other locations or regions, but not -being "real". Since the item and location have no ID, they get dropped at the end of generation and so the server is -never made aware of them and these locations can never be checked, nor can the items be received during play. -They may also be used for making the spoiler log look nicer, i.e. by having a `"Victory"` Event Item, that -is required to finish the game. This makes it very clear when the player finishes, rather than only seeing their last -relevant Item. Events function just like any other Location, and can still have their own access rules, etc. -By convention, the Event "pair" of Location and Item typically have the same name, though this is not a requirement. -They must not exist in the `name_to_id` lookups, as they have no ID. - -The most common way to create an Event pair is to create and place the Item on the Location as soon as it's created: - -```python -from worlds.AutoWorld import World -from BaseClasses import ItemClassification -from .subclasses import MyGameLocation, MyGameItem - - -class MyGameWorld(World): - victory_loc = MyGameLocation(self.player, "Victory", None) - victory_loc.place_locked_item(MyGameItem("Victory", ItemClassification.progression, None, self.player)) -``` - ### Regions Regions are logical containers that typically hold locations that share some common access rules. If location logic is @@ -291,7 +266,7 @@ like entrance randomization in logic. Regions have a list called `exits`, containing `Entrance` objects representing transitions to other regions. -There must be one special region (Called "Menu" by default, but configurable using [origin_region_name](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/AutoWorld.py#L298-L299)), +There must be one special region (Called "Menu" by default, but configurable using [origin_region_name](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/AutoWorld.py#L310-L311)), from which the logic unfolds. AP assumes that a player will always be able to return to this starting region by resetting the game ("Save and quit"). ### Entrances @@ -339,6 +314,63 @@ avoiding the need for indirect conditions at the expense of performance. An item rule is a function that returns `True` or `False` for a `Location` based on a single item. It can be used to reject the placement of an item there. +### Events (or "generation-only items/locations") + +An event item or location is one that only exists during multiworld generation; the server is never made aware of them. +Event locations can never be checked by the player, and event items cannot be received during play. + +Events are used to represent in-game actions (that aren't regular Archipelago locations) when either: + +* We want to show in the spoiler log when the player is expected to perform the in-game action. +* It's the cleanest way to represent how that in-game action impacts logic. + +Typical examples include completing the goal, defeating a boss, or flipping a switch that affects multiple areas. + +To be precise: the term "event" on its own refers to the special combination of an "event item" placed on an "event +location". Event items and locations are created the same way as normal items and locations, except that they have an +`id` of `None`, and an event item must be placed on an event location +(and vice versa). Finally, although events are often described as "fake" items and locations, it's important to +understand that they are perfectly real during generation. + +The most common way to create an event is to create the event item and the event location, then immediately call +`Location.place_locked_item()`: + +```python +victory_loc = MyGameLocation(self.player, "Defeat the Final Boss", None, final_boss_arena_region) +victory_loc.place_locked_item(MyGameItem("Victory", ItemClassification.progression, None, self.player)) +self.multiworld.completion_condition[self.player] = lambda state: state.has("Victory", self.player) +set_rule(victory_loc, lambda state: state.has("Boss Defeating Sword", self.player)) +``` + +Requiring an event to finish the game will make the spoiler log display an additional +`Defeat the Final Boss: Victory` line when the player is expected to finish, rather than only showing their last +relevant item. But events aren't just about the spoiler log; a more substantial example of using events to structure +your logic might be: + +```python +water_loc = MyGameLocation(self.player, "Water Level Switch", None, pump_station_region) +water_loc.place_locked_item(MyGameItem("Lowered Water Level", ItemClassification.progression, None, self.player)) +pump_station_region.locations.append(water_loc) +set_rule(water_loc, lambda state: state.has("Double Jump", self.player)) # the switch is really high up +... +basement_loc = MyGameLocation(self.player, "Flooded House - Basement Chest", None, flooded_house_region) +flooded_house_region.locations += [upstairs_loc, ground_floor_loc, basement_loc] +... +set_rule(basement_loc, lambda state: state.has("Lowered Water Level", self.player)) +``` + +This creates a "Lowered Water Level" event and a regular location whose access rule depends on that +event being reachable. If you made several more locations the same way, this would ensure all of those locations can +only become reachable when the event location is reachable (i.e. when the water level can be lowered), without +copy-pasting the event location's access rule and then repeatedly re-evaluating it. Also, the spoiler log will show +`Water Level Switch: Lowered Water Level` when the player is expected to do this. + +To be clear, this example could also be modeled with a second Region (perhaps "Un-Flooded House"). Or you could modify +the game so flipping that switch checks a regular AP location in addition to lowering the water level. +Events are never required, but it may be cleaner to use an event if e.g. flipping that switch affects the logic in +dozens of half-flooded areas that would all otherwise need additional Regions, and you don't want it to be a regular +location. It depends on the game. + ## Implementation ### Your World @@ -488,8 +520,8 @@ In addition, the following methods can be implemented and are called in this ord If it's hard to separate, this can be done during `generate_early` or `create_items` as well. * `create_items(self)` called to place player's items into the MultiWorld's itempool. By the end of this step all regions, locations and - items have to be in the MultiWorld's regions and itempool. You cannot add or remove items, locations, or regions - after this step. Locations cannot be moved to different regions after this step. + items have to be in the MultiWorld's regions and itempool. You cannot add or remove items, locations, or regions after + this step. Locations cannot be moved to different regions after this step. This includes event items and locations. * `set_rules(self)` called to set access and item rules on locations and entrances. * `connect_entrances(self)` @@ -501,7 +533,7 @@ In addition, the following methods can be implemented and are called in this ord called to modify item placement before, during, and after the regular fill process; all finishing before `generate_output`. Any items that need to be placed during `pre_fill` should not exist in the itempool, and if there are any items that need to be filled this way, but need to be in state while you fill other items, they can be - returned from `get_prefill_items`. + returned from `get_pre_fill_items`. * `generate_output(self, output_directory: str)` creates the output files if there is output to be generated. When this is called, `self.multiworld.get_locations(self.player)` has all locations for the player, with attribute `item` pointing to the diff --git a/docs/world maintainer.md b/docs/world maintainer.md index 17aacdf8c269..6971a9822744 100644 --- a/docs/world maintainer.md +++ b/docs/world maintainer.md @@ -65,5 +65,5 @@ date, voting members and final result in the commit message. ## Handling of Unmaintained Worlds -As long as worlds are known to work for the most part, they can stay included. Once a world becomes broken it shall be -moved from `worlds/` to `worlds_disabled/`. +As long as worlds are known to work for the most part, they can stay included. Once the world becomes broken, it shall +be deleted. diff --git a/inno_setup.iss b/inno_setup.iss index adf9acc83409..6f41b20496a1 100644 --- a/inno_setup.iss +++ b/inno_setup.iss @@ -86,6 +86,7 @@ Type: dirifempty; Name: "{app}" [InstallDelete] Type: files; Name: "{app}\*.exe" Type: files; Name: "{app}\data\lua\connector_pkmn_rb.lua" +Type: files; Name: "{app}\data\lua\connector_ff1.lua" Type: filesandordirs; Name: "{app}\SNI\lua*" Type: filesandordirs; Name: "{app}\EnemizerCLI*" #include "installdelete.iss" @@ -137,11 +138,6 @@ Root: HKCR; Subkey: "{#MyAppName}kdl3patch"; ValueData: "Arc Root: HKCR; Subkey: "{#MyAppName}kdl3patch\DefaultIcon"; ValueData: "{app}\ArchipelagoSNIClient.exe,0"; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}kdl3patch\shell\open\command"; ValueData: """{app}\ArchipelagoSNIClient.exe"" ""%1"""; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: ".apmc"; ValueData: "{#MyAppName}mcdata"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata"; ValueData: "Archipelago Minecraft Data"; Flags: uninsdeletekey; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata\DefaultIcon"; ValueData: "{app}\ArchipelagoMinecraftClient.exe,0"; ValueType: string; ValueName: ""; -Root: HKCR; Subkey: "{#MyAppName}mcdata\shell\open\command"; ValueData: """{app}\ArchipelagoMinecraftClient.exe"" ""%1"""; ValueType: string; ValueName: ""; - Root: HKCR; Subkey: ".apz5"; ValueData: "{#MyAppName}n64zpf"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}n64zpf"; ValueData: "Archipelago Ocarina of Time Patch"; Flags: uninsdeletekey; ValueType: string; ValueName: ""; Root: HKCR; Subkey: "{#MyAppName}n64zpf\DefaultIcon"; ValueData: "{app}\ArchipelagoOoTClient.exe,0"; ValueType: string; ValueName: ""; diff --git a/kvui.py b/kvui.py index d0d965c30b22..e11e366d72d8 100644 --- a/kvui.py +++ b/kvui.py @@ -6,7 +6,6 @@ import io import pkgutil from collections import deque - assert "kivy" not in sys.modules, "kvui should be imported before kivy for frozen compatibility" if sys.platform == "win32": @@ -57,10 +56,14 @@ from kivy.uix.popup import Popup from kivy.uix.image import AsyncImage from kivymd.app import MDApp +from kivymd.uix.dialog import MDDialog, MDDialogHeadlineText, MDDialogSupportingText, MDDialogButtonContainer from kivymd.uix.gridlayout import MDGridLayout from kivymd.uix.floatlayout import MDFloatLayout from kivymd.uix.boxlayout import MDBoxLayout -from kivymd.uix.tab.tab import MDTabsSecondary, MDTabsItem, MDTabsItemText, MDTabsCarousel +from kivymd.uix.navigationbar import MDNavigationBar, MDNavigationItem +from kivymd.uix.screen import MDScreen +from kivymd.uix.screenmanager import MDScreenManager + from kivymd.uix.menu import MDDropdownMenu from kivymd.uix.menu.menu import MDDropdownTextItem from kivymd.uix.dropdownitem import MDDropDownItem, MDDropDownItemText @@ -710,72 +713,94 @@ def _change_to_history_text_if_available(self, new_index: int) -> None: self.text = self._command_history[self._command_history_index] +class MessageBoxLabel(MDLabel): + def __init__(self, **kwargs): + super().__init__(**kwargs) + self._label.refresh() + + class MessageBox(Popup): - class MessageBoxLabel(MDLabel): - def __init__(self, **kwargs): - super().__init__(**kwargs) - self._label.refresh() def __init__(self, title, text, error=False, **kwargs): - label = MessageBox.MessageBoxLabel(text=text) + label = MessageBoxLabel(text=text) separator_color = [217 / 255, 129 / 255, 122 / 255, 1.] if error else [47 / 255., 167 / 255., 212 / 255, 1.] super().__init__(title=title, content=label, size_hint=(0.5, None), width=max(100, int(label.width) + 40), separator_color=separator_color, **kwargs) self.height += max(0, label.height - 18) -class ClientTabs(MDTabsSecondary): - carousel: MDTabsCarousel - lock_swiping = True +class MDNavigationItemBase(MDNavigationItem): + text = StringProperty(None) - def __init__(self, *args, **kwargs): - self.carousel = MDTabsCarousel(lock_swiping=True, anim_move_duration=0.2) - super().__init__(*args, MDDivider(size_hint_y=None, height=dp(1)), self.carousel, **kwargs) - self.size_hint_y = 1 - - def _check_panel_height(self, *args): - self.ids.tab_scroll.height = dp(38) - - def update_indicator( - self, x: float = 0.0, w: float = 0.0, instance: MDTabsItem = None - ) -> None: - def update_indicator(*args): - indicator_pos = (0, 0) - indicator_size = (0, 0) - - item_text_object = self._get_tab_item_text_icon_object() - - if item_text_object: - indicator_pos = ( - instance.x + dp(12), - self.indicator.pos[1] - if not self._tabs_carousel - else self._tabs_carousel.height, - ) - indicator_size = ( - instance.width - dp(24), - self.indicator_height, - ) - Animation( - pos=indicator_pos, - size=indicator_size, - d=0 if not self.indicator_anim else self.indicator_duration, - t=self.indicator_transition, - ).start(self.indicator) +class ButtonsPrompt(MDDialog): + def __init__(self, title: str, text: str, response: typing.Callable[[str], None], + *prompts: str, **kwargs) -> None: + """ + Customizable popup box that lets you create any number of buttons. The text of the pressed button is returned to + the callback. + + :param title: The title of the popup. + :param text: The message prompt in the popup. + :param response: A callable that will get called when the user presses a button. The prompt will not close + itself so should be done here if you want to close it when certain buttons are pressed. + :param prompts: Any number of strings to be used for the buttons. + """ + layout = MDBoxLayout(orientation="vertical") + label = MessageBoxLabel(text=text) + layout.add_widget(label) + + def on_release(button: MDButton, *args) -> None: + response(button.text) + + buttons = [MDDivider()] + for prompt in prompts: + button = MDButton( + MDButtonText(text=prompt, pos_hint={"center_x": 0.5, "center_y": 0.5}), + on_release=on_release, + style="text", + theme_width="Custom", + size_hint_x=1, + ) + button.text = prompt + buttons.extend([button, MDDivider()]) + + super().__init__( + MDDialogHeadlineText(text=title), + MDDialogSupportingText(text=text), + MDDialogButtonContainer(*buttons, orientation="vertical"), + **kwargs, + ) + + +class MDScreenManagerBase(MDScreenManager): + current_tab: MDNavigationItemBase + local_screen_names: list[str] - if not instance: - self.indicator.pos = (x, self.indicator.pos[1]) - self.indicator.size = (w, self.indicator_height) + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.local_screen_names = [] + + def add_widget(self, widget: Widget, *args, **kwargs) -> None: + super().add_widget(widget, *args, **kwargs) + if "index" in kwargs: + self.local_screen_names.insert(kwargs["index"], widget.name) else: - Clock.schedule_once(update_indicator) + self.local_screen_names.append(widget.name) - def remove_tab(self, tab, content=None): - if content is None: - content = tab.content - self.ids.container.remove_widget(tab) - self.carousel.remove_widget(content) - self.on_size(self, self.size) + def switch_screens(self, new_tab: MDNavigationItemBase) -> None: + """ + Called whenever the user clicks a tab to switch to a different screen. + + :param new_tab: The new screen to switch to's tab. + """ + name = new_tab.text + if self.local_screen_names.index(name) > self.local_screen_names.index(self.current_screen.name): + self.transition.direction = "left" + else: + self.transition.direction = "right" + self.current = name + self.current_tab = new_tab class CommandButton(MDButton, MDTooltip): @@ -803,6 +828,9 @@ class GameManager(ThemedApp): main_area_container: MDGridLayout """ subclasses can add more columns beside the tabs """ + tabs: MDNavigationBar + screens: MDScreenManagerBase + def __init__(self, ctx: context_type): self.title = self.base_title self.ctx = ctx @@ -832,7 +860,7 @@ def intercept_say(text): @property def tab_count(self): if hasattr(self, "tabs"): - return max(1, len(self.tabs.tab_list)) + return max(1, len(self.tabs.children)) return 1 def on_start(self): @@ -872,30 +900,32 @@ def connect_bar_validate(sender): self.grid.add_widget(self.progressbar) # middle part - self.tabs = ClientTabs(pos_hint={"center_x": 0.5, "center_y": 0.5}) - self.tabs.add_widget(MDTabsItem(MDTabsItemText(text="All" if len(self.logging_pairs) > 1 else "Archipelago"))) - self.log_panels["All"] = self.tabs.default_tab_content = UILog(*(logging.getLogger(logger_name) - for logger_name, name in - self.logging_pairs)) - self.tabs.carousel.add_widget(self.tabs.default_tab_content) + self.screens = MDScreenManagerBase(pos_hint={"center_x": 0.5}) + self.tabs = MDNavigationBar(orientation="horizontal", size_hint_y=None, height=dp(40), set_bars_color=True) + # bind the method to the bar for back compatibility + self.tabs.remove_tab = self.remove_client_tab + self.screens.current_tab = self.add_client_tab( + "All" if len(self.logging_pairs) > 1 else "Archipelago", + UILog(*(logging.getLogger(logger_name) for logger_name, name in self.logging_pairs)), + ) + self.log_panels["All"] = self.screens.current_tab.content + self.screens.current_tab.active = True for logger_name, display_name in self.logging_pairs: bridge_logger = logging.getLogger(logger_name) self.log_panels[display_name] = UILog(bridge_logger) if len(self.logging_pairs) > 1: - panel = MDTabsItem(MDTabsItemText(text=display_name)) - panel.content = self.log_panels[display_name] - # show Archipelago tab if other logging is present - self.tabs.carousel.add_widget(panel.content) - self.tabs.add_widget(panel) + self.add_client_tab(display_name, self.log_panels[display_name]) - hint_panel = self.add_client_tab("Hints", HintLayout()) self.hint_log = HintLog(self.json_to_kivy_parser) + hint_panel = self.add_client_tab("Hints", HintLayout(self.hint_log)) self.log_panels["Hints"] = hint_panel.content - hint_panel.content.add_widget(self.hint_log) self.main_area_container = MDGridLayout(size_hint_y=1, rows=1) - self.main_area_container.add_widget(self.tabs) + tab_container = MDGridLayout(size_hint_y=1, cols=1) + tab_container.add_widget(self.tabs) + tab_container.add_widget(self.screens) + self.main_area_container.add_widget(tab_container) self.grid.add_widget(self.main_area_container) @@ -932,25 +962,61 @@ def connect_bar_validate(sender): return self.container - def add_client_tab(self, title: str, content: Widget, index: int = -1) -> Widget: - """Adds a new tab to the client window with a given title, and provides a given Widget as its content. - Returns the new tab widget, with the provided content being placed on the tab as content.""" - new_tab = MDTabsItem(MDTabsItemText(text=title)) + def add_client_tab(self, title: str, content: Widget, index: int = -1) -> MDNavigationItemBase: + """ + Adds a new tab to the client window with a given title, and provides a given Widget as its content. + Returns the new tab widget, with the provided content being placed on the tab as content. + + :param title: The title of the tab. + :param content: The Widget to be added as content for this tab's new MDScreen. Will also be added to the + returned tab as tab.content. + :param index: The index to insert the tab at. Defaults to -1, meaning the tab will be appended to the end. + + :return: The new tab. + """ + if self.tabs.children: + self.tabs.add_widget(MDDivider(orientation="vertical")) + new_tab = MDNavigationItemBase(text=title) new_tab.content = content - if -1 < index <= len(self.tabs.carousel.slides): - new_tab.bind(on_release=self.tabs.set_active_item) - new_tab._tabs = self.tabs - self.tabs.ids.container.add_widget(new_tab, index=index) - self.tabs.carousel.add_widget(new_tab.content, index=len(self.tabs.carousel.slides) - index) + new_screen = MDScreen(name=title) + new_screen.add_widget(content) + if -1 < index <= len(self.tabs.children): + remapped_index = len(self.tabs.children) - index + self.tabs.add_widget(new_tab, index=remapped_index) + self.screens.add_widget(new_screen, index=index) else: self.tabs.add_widget(new_tab) - self.tabs.carousel.add_widget(new_tab.content) + self.screens.add_widget(new_screen) return new_tab + def remove_client_tab(self, tab: MDNavigationItemBase) -> None: + """ + Called to remove a tab and its screen. + + :param tab: The tab to remove. + """ + tab_index = self.tabs.children.index(tab) + # if the tab is currently active we need to swap before removing it + if tab == self.screens.current_tab: + if not tab_index: + # account for the divider + swap_index = tab_index + 2 + else: + swap_index = tab_index - 2 + self.tabs.children[swap_index].on_release() + # self.screens.switch_screens(self.tabs.children[swap_index]) + # get the divider to the left if we can + if not tab_index: + divider_index = tab_index + 1 + else: + divider_index = tab_index - 1 + self.tabs.remove_widget(self.tabs.children[divider_index]) + self.tabs.remove_widget(tab) + self.screens.remove_widget(self.screens.get_screen(tab.text)) + def update_texts(self, dt): - for slide in self.tabs.carousel.slides: - if hasattr(slide, "fix_heights"): - slide.fix_heights() # TODO: remove this when Kivy fixes this upstream + if hasattr(self.screens.current_tab.content, "fix_heights"): + getattr(self.screens.current_tab.content, "fix_heights")() if self.ctx.server: self.title = self.base_title + " " + Utils.__version__ + \ f" | Connected to: {self.ctx.server_address} " \ diff --git a/pytest.ini b/pytest.ini index cd8fd8dfce37..4469a7c30d64 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,5 @@ [pytest] -python_files = test_*.py Test*.py # TODO: remove Test* once all worlds have been ported +python_files = test_*.py Test*.py __init__.py # TODO: remove Test* once all worlds have been ported python_classes = Test python_functions = test testpaths = diff --git a/requirements.txt b/requirements.txt index ba3c3d84b4b8..951db610d311 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ schema>=0.7.7 kivy>=2.3.1 bsdiff4>=1.2.6 platformdirs>=4.3.6 -certifi>=2025.1.31 +certifi>=2025.4.26 cython>=3.0.12 cymem>=2.0.11 orjson>=3.10.15 diff --git a/settings.py b/settings.py index 255c537fe09a..ef1ea9adf741 100644 --- a/settings.py +++ b/settings.py @@ -10,9 +10,10 @@ import types import typing import warnings +from collections.abc import Iterator, Sequence from enum import IntEnum from threading import Lock -from typing import cast, Any, BinaryIO, ClassVar, Dict, Iterator, List, Optional, TextIO, Tuple, Union, TypeVar +from typing import cast, Any, BinaryIO, ClassVar, TextIO, TypeVar, Union __all__ = [ "get_settings", "fmt_doc", "no_gui", @@ -23,7 +24,7 @@ no_gui = False skip_autosave = False -_world_settings_name_cache: Dict[str, str] = {} # TODO: cache on disk and update when worlds change +_world_settings_name_cache: dict[str, str] = {} # TODO: cache on disk and update when worlds change _world_settings_name_cache_updated = False _lock = Lock() @@ -53,7 +54,7 @@ def fmt_doc(cls: type, level: int) -> str: class Group: - _type_cache: ClassVar[Optional[Dict[str, Any]]] = None + _type_cache: ClassVar[dict[str, Any] | None] = None _dumping: bool = False _has_attr: bool = False _changed: bool = False @@ -106,7 +107,7 @@ def changed(self) -> bool: self.__dict__.values())) @classmethod - def get_type_hints(cls) -> Dict[str, Any]: + def get_type_hints(cls) -> dict[str, Any]: """Returns resolved type hints for the class""" if cls._type_cache is None: if not cls.__annotations__ or not isinstance(next(iter(cls.__annotations__.values())), str): @@ -124,10 +125,10 @@ def get(self, key: str, default: Any = None) -> Any: return self[key] return default - def items(self) -> List[Tuple[str, Any]]: + def items(self) -> list[tuple[str, Any]]: return [(key, getattr(self, key)) for key in self] - def update(self, dct: Dict[str, Any]) -> None: + def update(self, dct: dict[str, Any]) -> None: assert isinstance(dct, dict), f"{self.__class__.__name__}.update called with " \ f"{dct.__class__.__name__} instead of dict." @@ -196,7 +197,7 @@ def update(self, dct: Dict[str, Any]) -> None: warnings.warn(f"{self.__class__.__name__}.{k} " f"assigned from incompatible type {type(v).__name__}") - def as_dict(self, *args: str, downcast: bool = True) -> Dict[str, Any]: + def as_dict(self, *args: str, downcast: bool = True) -> dict[str, Any]: return { name: _to_builtin(cast(object, getattr(self, name))) if downcast else getattr(self, name) for name in self if not args or name in args @@ -211,7 +212,7 @@ def _dump_value(cls, value: Any, f: TextIO, indent: str) -> None: f.write(f"{indent}{yaml_line}") @classmethod - def _dump_item(cls, name: Optional[str], attr: object, f: TextIO, level: int) -> None: + def _dump_item(cls, name: str | None, attr: object, f: TextIO, level: int) -> None: """Write a group, dict or sequence item to f, where attr can be a scalar or a collection""" # lazy construction of yaml Dumper to avoid loading Utils early @@ -223,7 +224,7 @@ class Dumper(BaseDumper): def represent_mapping(self, tag: str, mapping: Any, flow_style: Any = None) -> MappingNode: from yaml import ScalarNode res: MappingNode = super().represent_mapping(tag, mapping, flow_style) - pairs = cast(List[Tuple[ScalarNode, Any]], res.value) + pairs = cast(list[tuple[ScalarNode, Any]], res.value) for k, v in pairs: k.style = None # remove quotes from keys return res @@ -329,9 +330,9 @@ class Path(str): """Marks the file as required and opens a file browser when missing""" is_exe: bool = False """Special cross-platform handling for executables""" - description: Optional[str] = None + description: str | None = None """Title to display when browsing for the file""" - copy_to: Optional[str] = None + copy_to: str | None = None """If not None, copy to AP folder instead of linking it""" @classmethod @@ -339,7 +340,7 @@ def validate(cls, path: str) -> None: """Overload and raise to validate input files from browse""" pass - def browse(self: T, **kwargs: Any) -> Optional[T]: + def browse(self: T, **kwargs: Any) -> T | None: """Opens a file browser to search for the file""" raise NotImplementedError(f"Please use a subclass of Path for {self.__class__.__name__}") @@ -369,12 +370,12 @@ def resolve(self) -> str: class FilePath(Path): # path to a file - md5s: ClassVar[List[Union[str, bytes]]] = [] + md5s: ClassVar[list[str | bytes]] = [] """MD5 hashes for default validator.""" def browse(self: T, - filetypes: Optional[typing.Sequence[typing.Tuple[str, typing.Sequence[str]]]] = None, **kwargs: Any)\ - -> Optional[T]: + filetypes: Sequence[tuple[str, Sequence[str]]] | None = None, **kwargs: Any)\ + -> T | None: from Utils import open_filename, is_windows if not filetypes: if self.is_exe: @@ -439,7 +440,7 @@ def validate(cls, path: str) -> None: class FolderPath(Path): # path to a folder - def browse(self: T, **kwargs: Any) -> Optional[T]: + def browse(self: T, **kwargs: Any) -> T | None: from Utils import open_directory res = open_directory(f"Select {self.description or self.__class__.__name__}", self) if res: @@ -597,16 +598,16 @@ class LogNetwork(IntEnum): OFF = 0 ON = 1 - host: Optional[str] = None + host: str | None = None port: int = 38281 - password: Optional[str] = None - multidata: Optional[str] = None - savefile: Optional[str] = None + password: str | None = None + multidata: str | None = None + savefile: str | None = None disable_save: bool = False loglevel: str = "info" logtime: bool = False - server_password: Optional[ServerPassword] = None - disable_item_cheat: Union[DisableItemCheat, bool] = False + server_password: ServerPassword | None = None + disable_item_cheat: DisableItemCheat | bool = False location_check_points: LocationCheckPoints = LocationCheckPoints(1) hint_cost: HintCost = HintCost(10) release_mode: ReleaseMode = ReleaseMode("auto") @@ -702,7 +703,7 @@ class SnesRomStart(str): """ sni_path: SNIPath = SNIPath("SNI") - snes_rom_start: Union[SnesRomStart, bool] = True + snes_rom_start: SnesRomStart | bool = True class BizHawkClientOptions(Group): @@ -721,7 +722,7 @@ class RomStart(str): """ emuhawk_path: EmuHawkPath = EmuHawkPath(None) - rom_start: Union[RomStart, bool] = True + rom_start: RomStart | bool = True # Top-level group with lazy loading of worlds @@ -733,7 +734,7 @@ class Settings(Group): sni_options: SNIOptions = SNIOptions() bizhawkclient_options: BizHawkClientOptions = BizHawkClientOptions() - _filename: Optional[str] = None + _filename: str | None = None def __getattribute__(self, key: str) -> Any: if key.startswith("_") or key in self.__class__.__dict__: @@ -787,7 +788,7 @@ def __getattribute__(self, key: str) -> Any: return super().__getattribute__(key) - def __init__(self, location: Optional[str]): # change to PathLike[str] once we drop 3.8? + def __init__(self, location: str | None): # change to PathLike[str] once we drop 3.8? super().__init__() if location: from Utils import parse_yaml @@ -821,7 +822,7 @@ def autosave() -> None: import atexit atexit.register(autosave) - def save(self, location: Optional[str] = None) -> None: # as above + def save(self, location: str | None = None) -> None: # as above from Utils import parse_yaml location = location or self._filename assert location, "No file specified" @@ -854,7 +855,7 @@ def dump(self, f: TextIO, level: int = 0) -> None: super().dump(f, level) @property - def filename(self) -> Optional[str]: + def filename(self) -> str | None: return self._filename @@ -867,7 +868,7 @@ def get_settings() -> Settings: if not res: from Utils import user_path, local_path filenames = ("options.yaml", "host.yaml") - locations: List[str] = [] + locations: list[str] = [] if os.path.join(os.getcwd()) != local_path(): locations += filenames # use files from cwd only if it's not the local_path locations += [user_path(filename) for filename in filenames] diff --git a/setup.py b/setup.py index 8d415932d05d..cd1b1e87107d 100644 --- a/setup.py +++ b/setup.py @@ -1,22 +1,20 @@ import base64 import datetime +import io +import json import os import platform import shutil +import subprocess import sys import sysconfig +import threading +import urllib.request import warnings import zipfile -import urllib.request -import io -import json -import threading -import subprocess - +from collections.abc import Iterable, Sequence from hashlib import sha3_512 from pathlib import Path -from typing import Dict, Iterable, List, Optional, Sequence, Set, Tuple, Union - # This is a bit jank. We need cx-Freeze to be able to run anything from this script, so install it requirement = 'cx-Freeze==8.0.0' @@ -60,13 +58,11 @@ # On Python < 3.10 LogicMixin is not currently supported. -non_apworlds: Set[str] = { +non_apworlds: set[str] = { "A Link to the Past", "Adventure", "ArchipIDLE", "Archipelago", - "Clique", - "Final Fantasy", "Lufia II Ancient Cave", "Meritous", "Ocarina of Time", @@ -147,7 +143,7 @@ def download_SNI() -> None: print(f"No SNI found for system spec {platform_name} {machine_name}") -signtool: Optional[str] +signtool: str | None if os.path.exists("X:/pw.txt"): print("Using signtool") with open("X:/pw.txt", encoding="utf-8-sig") as f: @@ -205,7 +201,7 @@ def remove_sprites_from_folder(folder: Path) -> None: os.remove(folder / file) -def _threaded_hash(filepath: Union[str, Path]) -> str: +def _threaded_hash(filepath: str | Path) -> str: hasher = sha3_512() hasher.update(open(filepath, "rb").read()) return base64.b85encode(hasher.digest()).decode() @@ -255,7 +251,7 @@ def finalize_options(self) -> None: self.libfolder = Path(self.buildfolder, "lib") self.library = Path(self.libfolder, "library.zip") - def installfile(self, path: Path, subpath: Optional[Union[str, Path]] = None, keep_content: bool = False) -> None: + def installfile(self, path: Path, subpath: str | Path | None = None, keep_content: bool = False) -> None: folder = self.buildfolder if subpath: folder /= subpath @@ -374,11 +370,7 @@ def run(self) -> None: from worlds.AutoWorld import AutoWorldRegister assert not non_apworlds - set(AutoWorldRegister.world_types), \ f"Unknown world {non_apworlds - set(AutoWorldRegister.world_types)} designated for .apworld" - folders_to_remove: List[str] = [] - disabled_worlds_folder = "worlds_disabled" - for entry in os.listdir(disabled_worlds_folder): - if os.path.isdir(os.path.join(disabled_worlds_folder, entry)): - folders_to_remove.append(entry) + folders_to_remove: list[str] = [] generate_yaml_templates(self.buildfolder / "Players" / "Templates", False) for worldname, worldtype in AutoWorldRegister.world_types.items(): if worldname not in non_apworlds: @@ -446,12 +438,12 @@ class AppImageCommand(setuptools.Command): ("app-exec=", None, "The application to run inside the image."), ("yes", "y", 'Answer "yes" to all questions.'), ] - build_folder: Optional[Path] - dist_file: Optional[Path] - app_dir: Optional[Path] + build_folder: Path | None + dist_file: Path | None + app_dir: Path | None app_name: str - app_exec: Optional[Path] - app_icon: Optional[Path] # source file + app_exec: Path | None + app_icon: Path | None # source file app_id: str # lower case name, used for icon and .desktop yes: bool @@ -488,12 +480,12 @@ def write_launcher(self, default_exe: Path) -> None: if [ ! "${{#tmp}}" -lt "${{#exe}}" ]; then exe="{default_exe.parent}/$exe" fi -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/{default_exe.parent}/lib" +export LD_LIBRARY_PATH="${{LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}}$APPDIR/{default_exe.parent}/lib" $APPDIR/$exe "$@" """) launcher_filename.chmod(0o755) - def install_icon(self, src: Path, name: Optional[str] = None, symlink: Optional[Path] = None) -> None: + def install_icon(self, src: Path, name: str | None = None, symlink: Path | None = None) -> None: assert self.app_dir, "Invalid app_dir" try: from PIL import Image @@ -556,7 +548,7 @@ def run(self) -> None: subprocess.call(f'ARCH={build_arch} ./appimagetool -n "{self.app_dir}" "{self.dist_file}"', shell=True) -def find_libs(*args: str) -> Sequence[Tuple[str, str]]: +def find_libs(*args: str) -> Sequence[tuple[str, str]]: """Try to find system libraries to be included.""" if not args: return [] @@ -564,7 +556,7 @@ def find_libs(*args: str) -> Sequence[Tuple[str, str]]: arch = build_arch.replace('_', '-') libc = 'libc6' # we currently don't support musl - def parse(line: str) -> Tuple[Tuple[str, str, str], str]: + def parse(line: str) -> tuple[tuple[str, str, str], str]: lib, path = line.strip().split(' => ') lib, typ = lib.split(' ', 1) for test_arch in ('x86-64', 'i386', 'aarch64'): @@ -589,8 +581,8 @@ def parse(line: str) -> Tuple[Tuple[str, str, str], str]: k: v for k, v in (parse(line) for line in data if "=>" in line) } - def find_lib(lib: str, arch: str, libc: str) -> Optional[str]: - cache: Dict[Tuple[str, str, str], str] = getattr(find_libs, "cache") + def find_lib(lib: str, arch: str, libc: str) -> str | None: + cache: dict[tuple[str, str, str], str] = getattr(find_libs, "cache") for k, v in cache.items(): if k == (lib, arch, libc): return v @@ -599,7 +591,7 @@ def find_lib(lib: str, arch: str, libc: str) -> Optional[str]: return v return None - res: List[Tuple[str, str]] = [] + res: list[tuple[str, str]] = [] for arg in args: # try exact match, empty libc, empty arch, empty arch and libc file = find_lib(arg, arch, libc) diff --git a/test/bases.py b/test/bases.py index a3ea233174dd..c9610c862da7 100644 --- a/test/bases.py +++ b/test/bases.py @@ -159,7 +159,6 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: self.multiworld.game[self.player] = self.game self.multiworld.player_name = {self.player: "Tester"} self.multiworld.set_seed(seed) - self.multiworld.state = CollectionState(self.multiworld) random.seed(self.multiworld.seed) self.multiworld.seed_name = get_seed_name(random) # only called to get same RNG progression as Generate.py args = Namespace() @@ -168,6 +167,7 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: 1: option.from_any(self.options.get(name, option.default)) }) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.world = self.multiworld.worlds[self.player] for step in gen_steps: call_all(self.multiworld, step) diff --git a/test/benchmark/locations.py b/test/benchmark/locations.py index 857e1882368b..16667a17b9af 100644 --- a/test/benchmark/locations.py +++ b/test/benchmark/locations.py @@ -59,13 +59,13 @@ def main(self): multiworld.game[1] = game multiworld.player_name = {1: "Tester"} multiworld.set_seed(0) - multiworld.state = CollectionState(multiworld) args = argparse.Namespace() for name, option in AutoWorld.AutoWorldRegister.world_types[game].options_dataclass.type_hints.items(): setattr(args, name, { 1: option.from_any(getattr(option, "default")) }) multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) gc.collect() for step in self.gen_steps: diff --git a/test/benchmark/match.py b/test/benchmark/match.py new file mode 100644 index 000000000000..ccb600c0ba99 --- /dev/null +++ b/test/benchmark/match.py @@ -0,0 +1,66 @@ +"""Micro benchmark comparing match as "switch" with if-elif and dict access""" + +from timeit import timeit + + +def make_match(count: int) -> str: + code = f"for val in range({count}):\n match val:\n" + for n in range(count): + m = n + 1 + code += f" case {n}:\n" + code += f" res = {m}\n" + return code + + +def make_elif(count: int) -> str: + code = f"for val in range({count}):\n" + for n in range(count): + m = n + 1 + code += f" {'' if n == 0 else 'el'}if val == {n}:\n" + code += f" res = {m}\n" + return code + + +def make_dict(count: int, mode: str) -> str: + if mode == "value": + code = "dct = {\n" + for n in range(count): + m = n + 1 + code += f" {n}: {m},\n" + code += "}\n" + code += f"for val in range({count}):\n res = dct[val]" + return code + elif mode == "call": + code = "" + for n in range(count): + m = n + 1 + code += f"def func{n}():\n val = {m}\n\n" + code += "dct = {\n" + for n in range(count): + code += f" {n}: func{n},\n" + code += "}\n" + code += f"for val in range({count}):\n dct[val]()" + return code + return "" + + +def timeit_best_of_5(stmt: str, setup: str = "pass") -> float: + """ + Benchmark some code, returning the best of 5 runs. + :param stmt: Code to benchmark + :param setup: Optional code to set up environment + :return: Time taken in microseconds + """ + return min(timeit(stmt, setup, number=10000, globals={}) for _ in range(5)) * 100 + + +def main() -> None: + for count in (3, 5, 8, 10, 20, 30): + print(f"value of {count:-2} with match: {timeit_best_of_5(make_match(count)) / count:.3f} us") + print(f"value of {count:-2} with elif: {timeit_best_of_5(make_elif(count)) / count:.3f} us") + print(f"value of {count:-2} with dict: {timeit_best_of_5(make_dict(count, 'value')) / count:.3f} us") + print(f"call of {count:-2} with dict: {timeit_best_of_5(make_dict(count, 'call')) / count:.3f} us") + + +if __name__ == "__main__": + main() diff --git a/test/general/__init__.py b/test/general/__init__.py index 6c4d5092cf13..34df741a8ca6 100644 --- a/test/general/__init__.py +++ b/test/general/__init__.py @@ -49,7 +49,6 @@ def setup_multiworld(worlds: Union[List[Type[World]], Type[World]], steps: Tuple multiworld.game = {player: world_type.game for player, world_type in enumerate(worlds, 1)} multiworld.player_name = {player: f"Tester{player}" for player in multiworld.player_ids} multiworld.set_seed(seed) - multiworld.state = CollectionState(multiworld) args = Namespace() for player, world_type in enumerate(worlds, 1): for key, option in world_type.options_dataclass.type_hints.items(): @@ -57,6 +56,7 @@ def setup_multiworld(worlds: Union[List[Type[World]], Type[World]], steps: Tuple updated_options[player] = option.from_any(option.default) setattr(args, key, updated_options) multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) for step in steps: call_all(multiworld, step) return multiworld diff --git a/test/general/test_implemented.py b/test/general/test_implemented.py index 1082a02912a8..cf0624a28837 100644 --- a/test/general/test_implemented.py +++ b/test/general/test_implemented.py @@ -1,7 +1,7 @@ import unittest from Fill import distribute_items_restrictive -from NetUtils import encode +from NetUtils import convert_to_base_types from worlds.AutoWorld import AutoWorldRegister, call_all from worlds import failed_world_loads from . import setup_solo_multiworld @@ -47,12 +47,28 @@ def test_slot_data(self): call_all(multiworld, "post_fill") for key, data in multiworld.worlds[1].fill_slot_data().items(): self.assertIsInstance(key, str, "keys in slot data must be a string") - self.assertIsInstance(encode(data), str, f"object {type(data).__name__} not serializable.") + convert_to_base_types(data) # only put base data types into slot data def test_no_failed_world_loads(self): if failed_world_loads: self.fail(f"The following worlds failed to load: {failed_world_loads}") + def test_prefill_items(self): + """Test that every world can reach every location from allstate before pre_fill.""" + for gamename, world_type in AutoWorldRegister.world_types.items(): + if gamename not in ("Archipelago", "Sudoku", "Final Fantasy", "Test Game"): + with self.subTest(gamename): + multiworld = setup_solo_multiworld(world_type, ("generate_early", "create_regions", "create_items", + "set_rules", "connect_entrances", "generate_basic")) + allstate = multiworld.get_all_state(False) + locations = multiworld.get_locations() + reachable = multiworld.get_reachable_locations(allstate) + unreachable = [location for location in locations if location not in reachable] + + self.assertTrue(not unreachable, + f"Locations were not reachable with all state before prefill: " + f"{unreachable}. Seed: {multiworld.seed}") + def test_explicit_indirect_conditions_spheres(self): """Tests that worlds using explicit indirect conditions produce identical spheres as when using implicit indirect conditions""" diff --git a/test/general/test_state.py b/test/general/test_state.py index 460fc3d60846..06c4046a6942 100644 --- a/test/general/test_state.py +++ b/test/general/test_state.py @@ -26,4 +26,4 @@ def test_all_state_is_available(self): for step in self.test_steps: with self.subTest("Step", step=step): call_all(multiworld, step) - self.assertTrue(multiworld.get_all_state(False, True)) + self.assertTrue(multiworld.get_all_state(False, allow_partial_entrances=True)) diff --git a/test/hosting/__main__.py b/test/hosting/__main__.py index 6640c637b5bd..e235d7bb7218 100644 --- a/test/hosting/__main__.py +++ b/test/hosting/__main__.py @@ -63,12 +63,12 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: spacer = '=' * 80 with TemporaryDirectory() as tempdir: - multis = [["Clique"], ["Temp World"], ["Clique", "Temp World"]] + multis = [["VVVVVV"], ["Temp World"], ["VVVVVV", "Temp World"]] p1_games = [] data_paths = [] rooms = [] - copy_world("Clique", "Temp World") + copy_world("VVVVVV", "Temp World") try: for n, games in enumerate(multis, 1): print(f"Generating [{n}] {', '.join(games)}") @@ -101,7 +101,7 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: with Client(host.address, game, "Player1") as client: local_data_packages = client.games_packages local_collected_items = len(client.checked_locations) - if collected_items < 2: # Clique only has 2 Locations + if collected_items < 2: # Don't collect anything on the last iteration client.collect_any() # TODO: Ctrl+C test here as well @@ -125,7 +125,7 @@ def expect_equal(first: Any, second: Any, msg: str = "") -> None: with Client(host.address, game, "Player1") as client: web_data_packages = client.games_packages web_collected_items = len(client.checked_locations) - if collected_items < 2: # Clique only has 2 Locations + if collected_items < 2: # Don't collect anything on the last iteration client.collect_any() if collected_items == 1: sleep(1) # wait for the server to collect the item diff --git a/test/hosting/generate.py b/test/hosting/generate.py index d5d39dc95ee0..e90868eb6f9f 100644 --- a/test/hosting/generate.py +++ b/test/hosting/generate.py @@ -34,7 +34,7 @@ def _generate_local_inner(games: Iterable[str], f.write(json.dumps({ "name": f"Player{n}", "game": game, - game: {"hard_mode": "true"}, + game: {}, "description": f"generate_local slot {n} ('Player{n}'): {game}", })) diff --git a/test/hosting/world.py b/test/hosting/world.py index e083e027fee1..cd53453c10c2 100644 --- a/test/hosting/world.py +++ b/test/hosting/world.py @@ -1,13 +1,12 @@ import re import shutil from pathlib import Path -from typing import Dict __all__ = ["copy", "delete"] -_new_worlds: Dict[str, str] = {} +_new_worlds: dict[str, str] = {} def copy(src: str, dst: str) -> None: @@ -31,7 +30,7 @@ def copy(src: str, dst: str) -> None: _new_worlds[dst] = str(dst_folder) with open(dst_folder / "__init__.py", "r", encoding="utf-8-sig") as f: contents = f.read() - contents = re.sub(r'game\s*=\s*[\'"]' + re.escape(src) + r'[\'"]', f'game = "{dst}"', contents) + contents = re.sub(r'game\s*(:\s*[a-zA-Z\[\]]+)?\s*=\s*[\'"]' + re.escape(src) + r'[\'"]', f'game = "{dst}"', contents) with open(dst_folder / "__init__.py", "w", encoding="utf-8") as f: f.write(contents) diff --git a/test/programs/test_common_client.py b/test/programs/test_common_client.py index 9936240d17b9..eeeba9d44ce1 100644 --- a/test/programs/test_common_client.py +++ b/test/programs/test_common_client.py @@ -47,17 +47,6 @@ async def test_archipelago_datapackage_lookups_exist(self): assert "Archipelago" in self.ctx.item_names, "Archipelago item names entry does not exist" assert "Archipelago" in self.ctx.location_names, "Archipelago location names entry does not exist" - async def test_implicit_name_lookups(self): - # Items - assert self.ctx.item_names[2**54 + 1] == "Test Item 1 - Safe" - assert self.ctx.item_names[2**54 + 3] == f"Unknown item (ID: {2**54+3})" - assert self.ctx.item_names[-1] == "Nothing" - - # Locations - assert self.ctx.location_names[2**54 + 1] == "Test Location 1 - Safe" - assert self.ctx.location_names[2**54 + 3] == f"Unknown location (ID: {2**54+3})" - assert self.ctx.location_names[-1] == "Cheat Console" - async def test_explicit_name_lookups(self): # Items assert self.ctx.item_names["__TestGame1"][2**54+1] == "Test Item 1 - Safe" diff --git a/worlds/AutoWorld.py b/worlds/AutoWorld.py index 67455a1a218e..6c1683e3d55e 100644 --- a/worlds/AutoWorld.py +++ b/worlds/AutoWorld.py @@ -382,7 +382,7 @@ def create_regions(self) -> None: def create_items(self) -> None: """ Method for creating and submitting items to the itempool. Items and Regions must *not* be created and submitted - to the MultiWorld after this step. If items need to be placed during pre_fill use `get_prefill_items`. + to the MultiWorld after this step. If items need to be placed during pre_fill use `get_pre_fill_items`. """ pass @@ -485,7 +485,7 @@ def create_item(self, name: str) -> "Item": def get_filler_item_name(self) -> str: """Called when the item pool needs to be filled with additional items to match location count.""" logging.warning(f"World {self} is generating a filler item without custom filler pool.") - return self.multiworld.random.choice(tuple(self.item_name_to_id.keys())) + return self.random.choice(tuple(self.item_name_to_id.keys())) @classmethod def create_group(cls, multiworld: "MultiWorld", new_player_id: int, players: Set[int]) -> World: @@ -528,7 +528,7 @@ def collect(self, state: "CollectionState", item: "Item") -> bool: """Called when an item is collected in to state. Useful for things such as progressive items or currency.""" name = self.collect_item(state, item) if name: - state.prog_items[self.player][name] += 1 + state.add_item(name, self.player) return True return False @@ -536,9 +536,7 @@ def remove(self, state: "CollectionState", item: "Item") -> bool: """Called when an item is removed from to state. Useful for things such as progressive items or currency.""" name = self.collect_item(state, item, True) if name: - state.prog_items[self.player][name] -= 1 - if state.prog_items[self.player][name] < 1: - del (state.prog_items[self.player][name]) + state.remove_item(name, self.player) return True return False diff --git a/worlds/Files.py b/worlds/Files.py index 69a88218efd4..fa3739a5a919 100644 --- a/worlds/Files.py +++ b/worlds/Files.py @@ -6,6 +6,7 @@ from enum import IntEnum import os import threading +from io import BytesIO from typing import ClassVar, Dict, List, Literal, Tuple, Any, Optional, Union, BinaryIO, overload, Sequence @@ -70,6 +71,18 @@ def get_handler(game: Optional[str]) -> Union[AutoPatchExtensionRegister, List[A container_version: int = 6 +def is_ap_player_container(game: str, data: bytes, player: int): + if not zipfile.is_zipfile(BytesIO(data)): + return False + with zipfile.ZipFile(BytesIO(data), mode='r') as zf: + if "archipelago.json" in zf.namelist(): + manifest = json.loads(zf.read("archipelago.json")) + if "game" in manifest and "player" in manifest: + if game == manifest["game"] and player == manifest["player"]: + return True + return False + + class InvalidDataError(Exception): """ Since games can override `read_contents` in APContainer, @@ -78,24 +91,15 @@ class InvalidDataError(Exception): class APContainer: - """A zipfile containing at least archipelago.json""" - version: int = container_version - compression_level: int = 9 - compression_method: int = zipfile.ZIP_DEFLATED - game: Optional[str] = None + """A zipfile containing at least archipelago.json, which contains a manifest json payload.""" + version: ClassVar[int] = container_version + compression_level: ClassVar[int] = 9 + compression_method: ClassVar[int] = zipfile.ZIP_DEFLATED - # instance attributes: path: Optional[str] - player: Optional[int] - player_name: str - server: str - def __init__(self, path: Optional[str] = None, player: Optional[int] = None, - player_name: str = "", server: str = ""): + def __init__(self, path: Optional[str] = None): self.path = path - self.player = player - self.player_name = player_name - self.server = server def write(self, file: Optional[Union[str, BinaryIO]] = None) -> None: zip_file = file if file else self.path @@ -135,31 +139,60 @@ def read(self, file: Optional[Union[str, BinaryIO]] = None) -> None: message = f"{arg0} - " raise InvalidDataError(f"{message}This might be the incorrect world version for this file") from e - def read_contents(self, opened_zipfile: zipfile.ZipFile) -> None: + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> Dict[str, Any]: with opened_zipfile.open("archipelago.json", "r") as f: manifest = json.load(f) if manifest["compatible_version"] > self.version: raise Exception(f"File (version: {manifest['compatible_version']}) too new " f"for this handler (version: {self.version})") + return manifest + + def get_manifest(self) -> Dict[str, Any]: + return { + # minimum version of patch system expected for patching to be successful + "compatible_version": 5, + "version": container_version, + } + + +class APPlayerContainer(APContainer): + """A zipfile containing at least archipelago.json meant for a player""" + game: ClassVar[Optional[str]] = None + patch_file_ending: str = "" + + player: Optional[int] + player_name: str + server: str + + def __init__(self, path: Optional[str] = None, player: Optional[int] = None, + player_name: str = "", server: str = ""): + super().__init__(path) + self.player = player + self.player_name = player_name + self.server = server + + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> Dict[str, Any]: + manifest = super().read_contents(opened_zipfile) self.player = manifest["player"] self.server = manifest["server"] self.player_name = manifest["player_name"] + return manifest def get_manifest(self) -> Dict[str, Any]: - return { + manifest = super().get_manifest() + manifest.update({ "server": self.server, # allow immediate connection to server in multiworld. Empty string otherwise "player": self.player, "player_name": self.player_name, "game": self.game, - # minimum version of patch system expected for patching to be successful - "compatible_version": 5, - "version": container_version, - } + "patch_file_ending": self.patch_file_ending, + }) + return manifest -class APPatch(APContainer): +class APPatch(APPlayerContainer): """ - An `APContainer` that represents a patch file. + An `APPlayerContainer` that represents a patch file. It includes the `procedure` key in the manifest to indicate that it is a patch. Your implementation should inherit from this if your output file @@ -192,7 +225,6 @@ class APProcedurePatch(APAutoPatchInterface): """ hash: Optional[str] # base checksum of source file source_data: bytes - patch_file_ending: str = "" files: Dict[str, bytes] @classmethod @@ -214,7 +246,6 @@ def get_manifest(self) -> Dict[str, Any]: manifest = super(APProcedurePatch, self).get_manifest() manifest["base_checksum"] = self.hash manifest["result_file_ending"] = self.result_file_ending - manifest["patch_file_ending"] = self.patch_file_ending manifest["procedure"] = self.procedure if self.procedure == APDeltaPatch.procedure: manifest["compatible_version"] = 5 diff --git a/worlds/LauncherComponents.py b/worlds/LauncherComponents.py index d587e65d33cc..06c77ab060e3 100644 --- a/worlds/LauncherComponents.py +++ b/worlds/LauncherComponents.py @@ -210,30 +210,27 @@ def install_apworld(apworld_path: str = "") -> None: Component('Launcher', 'Launcher', component_type=Type.HIDDEN), # Core Component('Host', 'MultiServer', 'ArchipelagoServer', cli=True, - file_identifier=SuffixIdentifier('.archipelago', '.zip')), - Component('Generate', 'Generate', cli=True), - Component("Install APWorld", func=install_apworld, file_identifier=SuffixIdentifier(".apworld")), - Component('Text Client', 'CommonClient', 'ArchipelagoTextClient', func=launch_textclient), + file_identifier=SuffixIdentifier('.archipelago', '.zip'), + description="Host a generated multiworld on your computer."), + Component('Generate', 'Generate', cli=True, + description="Generate a multiworld with the YAMLs in the players folder."), + Component("Install APWorld", func=install_apworld, file_identifier=SuffixIdentifier(".apworld"), + description="Install an APWorld to play games not included with Archipelago by default."), + Component('Text Client', 'CommonClient', 'ArchipelagoTextClient', func=launch_textclient, + description="Connect to a multiworld using the text client."), Component('Links Awakening DX Client', 'LinksAwakeningClient', file_identifier=SuffixIdentifier('.apladx')), Component('LttP Adjuster', 'LttPAdjuster'), - # Minecraft - Component('Minecraft Client', 'MinecraftClient', icon='mcicon', cli=True, - file_identifier=SuffixIdentifier('.apmc')), # Ocarina of Time Component('OoT Client', 'OoTClient', file_identifier=SuffixIdentifier('.apz5')), Component('OoT Adjuster', 'OoTAdjuster'), - # FF1 - Component('FF1 Client', 'FF1Client'), # TLoZ Component('Zelda 1 Client', 'Zelda1Client', file_identifier=SuffixIdentifier('.aptloz')), # ChecksFinder Component('ChecksFinder Client', 'ChecksFinderClient'), # Starcraft 2 Component('Starcraft 2 Client', 'Starcraft2Client'), - # Wargroove - Component('Wargroove Client', 'WargrooveClient'), # Zillion Component('Zillion Client', 'ZillionClient', file_identifier=SuffixIdentifier('.apzl')), @@ -246,6 +243,5 @@ def install_apworld(apworld_path: str = "") -> None: # if registering an icon from within an apworld, the format "ap:module.name/path/to/file.png" can be used icon_paths = { 'icon': local_path('data', 'icon.png'), - 'mcicon': local_path('data', 'mcicon.png'), 'discord': local_path('data', 'discord-mark-blue.png'), } diff --git a/worlds/_bizhawk/client.py b/worlds/_bizhawk/client.py index 16a8325a10f7..fe8e97e65cda 100644 --- a/worlds/_bizhawk/client.py +++ b/worlds/_bizhawk/client.py @@ -19,7 +19,8 @@ def launch_client(*args) -> None: component = Component("BizHawk Client", "BizHawkClient", component_type=Type.CLIENT, func=launch_client, - file_identifier=SuffixIdentifier()) + file_identifier=SuffixIdentifier(), + description="Open the BizHawk client, to play games using the Bizhawk emulator.") components.append(component) diff --git a/worlds/adventure/Rom.py b/worlds/adventure/Rom.py index 4d56cd19e529..cb104c56d867 100644 --- a/worlds/adventure/Rom.py +++ b/worlds/adventure/Rom.py @@ -182,10 +182,11 @@ def write_contents(self, opened_zipfile: zipfile.ZipFile): json.dumps(self.rom_deltas), compress_type=zipfile.ZIP_LZMA) - def read_contents(self, opened_zipfile: zipfile.ZipFile): - super(AdventureDeltaPatch, self).read_contents(opened_zipfile) + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> dict[str, Any]: + manifest = super(AdventureDeltaPatch, self).read_contents(opened_zipfile) self.foreign_items = AdventureDeltaPatch.read_foreign_items(opened_zipfile) self.autocollect_items = AdventureDeltaPatch.read_autocollect_items(opened_zipfile) + return manifest @classmethod def get_source_data(cls) -> bytes: diff --git a/worlds/ahit/Client.py b/worlds/ahit/Client.py index 0a9d8d6042a3..64c1124fa853 100644 --- a/worlds/ahit/Client.py +++ b/worlds/ahit/Client.py @@ -238,10 +238,10 @@ async def proxy_loop(ctx: AHITContext): logger.info("Aborting AHIT Proxy Client due to errors") -def launch(): +def launch(*launch_args: str): async def main(): parser = get_base_parser() - args = parser.parse_args() + args = parser.parse_args(launch_args) ctx = AHITContext(args.connect, args.password) logger.info("Starting A Hat in Time proxy server") diff --git a/worlds/ahit/Locations.py b/worlds/ahit/Locations.py index 713113e6919b..9937c774d1c8 100644 --- a/worlds/ahit/Locations.py +++ b/worlds/ahit/Locations.py @@ -477,7 +477,7 @@ def get_location_names() -> Dict[str, int]: "Act Completion (Rush Hour)": LocData(2000311210, "Rush Hour", dlc_flags=HatDLC.dlc2, hookshot=True, - required_hats=[HatType.ICE, HatType.BREWING]), + required_hats=[HatType.ICE, HatType.BREWING, HatType.DWELLER]), "Act Completion (Time Rift - Rumbi Factory)": LocData(2000312736, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2), diff --git a/worlds/ahit/Rules.py b/worlds/ahit/Rules.py index 2ca0628a6875..1c2c5845dbda 100644 --- a/worlds/ahit/Rules.py +++ b/worlds/ahit/Rules.py @@ -455,7 +455,7 @@ def set_moderate_rules(world: "HatInTimeWorld"): if "Pink Paw Station Thug" in key and is_location_valid(world, key): set_rule(world.multiworld.get_location(key, world.player), lambda state: True) - # Moderate: clear Rush Hour without Hookshot + # Moderate: clear Rush Hour without Hookshot or Dweller Mask set_rule(world.multiworld.get_location("Act Completion (Rush Hour)", world.player), lambda state: state.has("Metro Ticket - Pink", world.player) and state.has("Metro Ticket - Yellow", world.player) diff --git a/worlds/ahit/__init__.py b/worlds/ahit/__init__.py index 16b54064c691..1bcc840ae6cb 100644 --- a/worlds/ahit/__init__.py +++ b/worlds/ahit/__init__.py @@ -16,9 +16,9 @@ from Utils import local_path -def launch_client(): +def launch_client(*args: str): from .Client import launch - launch_component(launch, name="AHITClient") + launch_component(launch, name="AHITClient", args=args) components.append(Component("A Hat in Time Client", "AHITClient", func=launch_client, diff --git a/worlds/alttp/EntranceRandomizer.py b/worlds/alttp/EntranceRandomizer.py index e62088c1e05c..569e6a5d7ef3 100644 --- a/worlds/alttp/EntranceRandomizer.py +++ b/worlds/alttp/EntranceRandomizer.py @@ -54,16 +54,13 @@ def defval(value): ret = parser.parse_args(argv) # cannot be set through CLI currently - ret.plando_items = [] - ret.plando_texts = {} - ret.plando_connections = [] if multiargs.multi: defaults = copy.deepcopy(ret) for player in range(1, multiargs.multi + 1): playerargs = parse_arguments(shlex.split(getattr(ret, f"p{player}")), True) - for name in ["plando_items", "plando_texts", "plando_connections", "game", "sprite", "sprite_pool"]: + for name in ["game", "sprite", "sprite_pool"]: value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name) if player == 1: setattr(ret, name, {1: value}) diff --git a/worlds/alttp/ItemPool.py b/worlds/alttp/ItemPool.py index 57ad01b9e408..9f1a58e5466d 100644 --- a/worlds/alttp/ItemPool.py +++ b/worlds/alttp/ItemPool.py @@ -548,10 +548,12 @@ def set_up_take_anys(multiworld, world, player): old_man_take_any.shop = TakeAny(old_man_take_any, 0x0112, 0xE2, True, True, total_shop_slots) multiworld.shops.append(old_man_take_any.shop) - swords = [item for item in multiworld.itempool if item.player == player and item.type == 'Sword'] - if swords: - sword = multiworld.random.choice(swords) - multiworld.itempool.remove(sword) + sword_indices = [ + index for index, item in enumerate(multiworld.itempool) if item.player == player and item.type == 'Sword' + ] + if sword_indices: + sword_index = multiworld.random.choice(sword_indices) + sword = multiworld.itempool.pop(sword_index) multiworld.itempool.append(item_factory('Rupees (20)', world)) old_man_take_any.shop.add_inventory(0, sword.name, 0, 0) loc_name = "Old Man Sword Cave" diff --git a/worlds/alttp/__init__.py b/worlds/alttp/__init__.py index 1934138afa50..7f8d6ddf68ac 100644 --- a/worlds/alttp/__init__.py +++ b/worlds/alttp/__init__.py @@ -505,20 +505,20 @@ def collect_item(self, state: CollectionState, item: Item, remove=False): def pre_fill(self): from Fill import fill_restrictive, FillError attempts = 5 - world = self.multiworld - player = self.player - all_state = world.get_all_state(use_cache=True) + all_state = self.multiworld.get_all_state(use_cache=False) crystals = [self.create_item(name) for name in ['Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', 'Crystal 6']] - crystal_locations = [world.get_location('Turtle Rock - Prize', player), - world.get_location('Eastern Palace - Prize', player), - world.get_location('Desert Palace - Prize', player), - world.get_location('Tower of Hera - Prize', player), - world.get_location('Palace of Darkness - Prize', player), - world.get_location('Thieves\' Town - Prize', player), - world.get_location('Skull Woods - Prize', player), - world.get_location('Swamp Palace - Prize', player), - world.get_location('Ice Palace - Prize', player), - world.get_location('Misery Mire - Prize', player)] + for crystal in crystals: + all_state.remove(crystal) + crystal_locations = [self.get_location('Turtle Rock - Prize'), + self.get_location('Eastern Palace - Prize'), + self.get_location('Desert Palace - Prize'), + self.get_location('Tower of Hera - Prize'), + self.get_location('Palace of Darkness - Prize'), + self.get_location('Thieves\' Town - Prize'), + self.get_location('Skull Woods - Prize'), + self.get_location('Swamp Palace - Prize'), + self.get_location('Ice Palace - Prize'), + self.get_location('Misery Mire - Prize')] placed_prizes = {loc.item.name for loc in crystal_locations if loc.item} unplaced_prizes = [crystal for crystal in crystals if crystal.name not in placed_prizes] empty_crystal_locations = [loc for loc in crystal_locations if not loc.item] @@ -526,8 +526,8 @@ def pre_fill(self): try: prizepool = unplaced_prizes.copy() prize_locs = empty_crystal_locations.copy() - world.random.shuffle(prize_locs) - fill_restrictive(world, all_state, prize_locs, prizepool, True, lock=True, + self.multiworld.random.shuffle(prize_locs) + fill_restrictive(self.multiworld, all_state, prize_locs, prizepool, True, lock=True, name="LttP Dungeon Prizes") except FillError as e: lttp_logger.exception("Failed to place dungeon prizes (%s). Will retry %s more times", e, @@ -541,7 +541,7 @@ def pre_fill(self): if self.options.mode == 'standard' and self.options.small_key_shuffle \ and self.options.small_key_shuffle != small_key_shuffle.option_universal and \ self.options.small_key_shuffle != small_key_shuffle.option_own_dungeons: - world.local_early_items[player]["Small Key (Hyrule Castle)"] = 1 + self.multiworld.local_early_items[self.player]["Small Key (Hyrule Castle)"] = 1 @classmethod def stage_pre_fill(cls, world): @@ -811,12 +811,15 @@ def get_filler_item_name(self) -> str: return GetBeemizerItem(self.multiworld, self.player, item) def get_pre_fill_items(self): - res = [] + res = [self.create_item(name) for name in ('Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', + 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', + 'Crystal 6')] if self.dungeon_local_item_names: for dungeon in self.dungeons.values(): for item in dungeon.all_items: if item.name in self.dungeon_local_item_names: res.append(item) + return res def fill_slot_data(self): diff --git a/worlds/alttp/test/__init__.py b/worlds/alttp/test/__init__.py index 307e75381d7e..031d508604d4 100644 --- a/worlds/alttp/test/__init__.py +++ b/worlds/alttp/test/__init__.py @@ -10,12 +10,12 @@ def world_setup(self): from worlds.alttp.Options import Medallion self.multiworld = MultiWorld(1) self.multiworld.game[1] = "A Link to the Past" - self.multiworld.state = CollectionState(self.multiworld) self.multiworld.set_seed(None) args = Namespace() for name, option in AutoWorldRegister.world_types["A Link to the Past"].options_dataclass.type_hints.items(): setattr(args, name, {1: option.from_any(getattr(option, "default"))}) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.world = self.multiworld.worlds[1] # by default medallion access is randomized, for unittests we set it to vanilla self.world.options.misery_mire_medallion.value = Medallion.option_ether diff --git a/worlds/alttp/test/options/test_dungeon_fill.py b/worlds/alttp/test/options/test_dungeon_fill.py index 17501b65d87c..4a0d30f7d9ad 100644 --- a/worlds/alttp/test/options/test_dungeon_fill.py +++ b/worlds/alttp/test/options/test_dungeon_fill.py @@ -38,7 +38,7 @@ def generate_with_options(self, option_value: int): def test_original_dungeons(self): self.generate_with_options(DungeonItem.option_original_dungeon) for location in self.multiworld.get_filled_locations(): - with (self.subTest(location=location)): + with (self.subTest(location_name=location.name)): if location.parent_region.dungeon is None: self.assertIs(location.item.dungeon, None) else: @@ -52,7 +52,7 @@ def test_original_dungeons(self): def test_own_dungeons(self): self.generate_with_options(DungeonItem.option_own_dungeons) for location in self.multiworld.get_filled_locations(): - with self.subTest(location=location): + with self.subTest(location_name=location.name): if location.parent_region.dungeon is None: self.assertIs(location.item.dungeon, None) else: diff --git a/worlds/aquaria/Regions.py b/worlds/aquaria/Regions.py index 40170e0c3262..3436374ac7ea 100755 --- a/worlds/aquaria/Regions.py +++ b/worlds/aquaria/Regions.py @@ -4,7 +4,7 @@ Description: Used to manage Regions in the Aquaria game multiworld randomizer """ -from typing import Dict, Optional +from typing import Dict, Optional, Iterable from BaseClasses import MultiWorld, Region, Entrance, Item, ItemClassification, CollectionState from .Items import AquariaItem, ItemNames from .Locations import AquariaLocations, AquariaLocation, AquariaLocationNames @@ -34,10 +34,15 @@ def _has_li(state: CollectionState, player: int) -> bool: return state.has(ItemNames.LI_AND_LI_SONG, player) -def _has_damaging_item(state: CollectionState, player: int) -> bool: - """`player` in `state` has the shield song item""" - return state.has_any({ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, ItemNames.LI_AND_LI_SONG, - ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, ItemNames.BABY_BLASTER}, player) +DAMAGING_ITEMS:Iterable[str] = [ + ItemNames.ENERGY_FORM, ItemNames.NATURE_FORM, ItemNames.BEAST_FORM, + ItemNames.LI_AND_LI_SONG, ItemNames.BABY_NAUTILUS, ItemNames.BABY_PIRANHA, + ItemNames.BABY_BLASTER +] + +def _has_damaging_item(state: CollectionState, player: int, damaging_items:Iterable[str] = DAMAGING_ITEMS) -> bool: + """`player` in `state` has the an item that do damage other than the ones in `to_remove`""" + return state.has_any(damaging_items, player) def _has_energy_attack_item(state: CollectionState, player: int) -> bool: @@ -566,9 +571,11 @@ def __connect_open_water_regions(self) -> None: self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_turtle, lambda state: _has_beast_form_or_arnassi_armor(state, self.player)) self.__connect_one_way_regions(self.openwater_tr_turtle, self.openwater_tr) + damaging_items_minus_nature_form = [item for item in DAMAGING_ITEMS if item != ItemNames.NATURE_FORM] self.__connect_one_way_regions(self.openwater_tr, self.openwater_tr_urns, lambda state: _has_bind_song(state, self.player) or - _has_damaging_item(state, self.player)) + _has_damaging_item(state, self.player, + damaging_items_minus_nature_form)) self.__connect_regions(self.openwater_tr, self.openwater_br) self.__connect_regions(self.openwater_tr, self.mithalas_city) self.__connect_regions(self.openwater_tr, self.veil_b) diff --git a/worlds/blasphemous/__init__.py b/worlds/blasphemous/__init__.py index a643e91c9b89..9dffc6c6d286 100644 --- a/worlds/blasphemous/__init__.py +++ b/worlds/blasphemous/__init__.py @@ -207,7 +207,6 @@ def create_items(self): if not self.options.skill_randomizer: self.place_items_from_dict(skill_dict) - def place_items_from_set(self, location_set: Set[str], name: str): for loc in location_set: self.get_location(loc).place_locked_item(self.create_item(name)) diff --git a/worlds/checksfinder/docs/setup_en.md b/worlds/checksfinder/docs/setup_en.md index e15763ab3110..fc1fb518488f 100644 --- a/worlds/checksfinder/docs/setup_en.md +++ b/worlds/checksfinder/docs/setup_en.md @@ -3,7 +3,8 @@ ## Required Software - ChecksFinder from - the [Github releases Page for the game](https://github.com/jonloveslegos/ChecksFinder/releases) (latest version) + the [Github releases Page for the game](https://github.com/jonloveslegos/ChecksFinder/releases) (latest version), or + from the [itch.io Page for the game](https://suncat0.itch.io/checksfinder) (including web version) ## Configuring your YAML file @@ -18,13 +19,13 @@ You can customize your options by visiting the [ChecksFinder Player Options Page ## Joining a MultiWorld Game -1. Start ChecksFinder -2. Enter the following information: - - Enter the server url (starting from `wss://` for https connection like archipelago.gg, and starting from `ws://` for http connection and local multiserver) - - Enter server port - - Enter the name of the slot you wish to connect to - - Enter the room password (optional) - - Press `Play Online` to connect -3. Start playing! - -Game options and controls are described in the readme on the github repository for the game +1. Start ChecksFinder and press `Play Online` +2. Switch to the console window/tab +3. Enter the following information: + - Server url + - Server port + - The name of the slot you wish to connect to + - The room password (optional) +4. Press `Connect` to connect +5. Switch to the game window/tab +6. Start playing! diff --git a/worlds/civ_6/Container.py b/worlds/civ_6/Container.py index 0c5340d9c2e5..a5790c1ec474 100644 --- a/worlds/civ_6/Container.py +++ b/worlds/civ_6/Container.py @@ -1,10 +1,9 @@ from dataclasses import dataclass import os -import io from typing import TYPE_CHECKING, Dict, List, Optional, cast import zipfile from BaseClasses import Location -from worlds.Files import APContainer, AutoPatchRegister +from worlds.Files import APPlayerContainer from .Enum import CivVICheckType from .Locations import CivVILocation, CivVILocationData @@ -26,22 +25,19 @@ class CivTreeItem: ui_tree_row: int -class CivVIContainer(APContainer, metaclass=AutoPatchRegister): +class CivVIContainer(APPlayerContainer): """ Responsible for generating the dynamic mod files for the Civ VI multiworld """ game: Optional[str] = "Civilization VI" patch_file_ending = ".apcivvi" - def __init__(self, patch_data: Dict[str, str] | io.BytesIO, base_path: str = "", output_directory: str = "", + def __init__(self, patch_data: Dict[str, str], base_path: str = "", output_directory: str = "", player: Optional[int] = None, player_name: str = "", server: str = ""): - if isinstance(patch_data, io.BytesIO): - super().__init__(patch_data, player, player_name, server) - else: - self.patch_data = patch_data - self.file_path = base_path - container_path = os.path.join(output_directory, base_path + ".apcivvi") - super().__init__(container_path, player, player_name, server) + self.patch_data = patch_data + self.file_path = base_path + container_path = os.path.join(output_directory, base_path + ".apcivvi") + super().__init__(container_path, player, player_name, server) def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None: for filename, yml in self.patch_data.items(): diff --git a/worlds/civ_6/data/boosts.py b/worlds/civ_6/data/boosts.py index a3977208154e..49cedfdfd991 100644 --- a/worlds/civ_6/data/boosts.py +++ b/worlds/civ_6/data/boosts.py @@ -78,8 +78,8 @@ CivVIBoostData( "BOOST_TECH_IRON_WORKING", "ERA_CLASSICAL", - ["TECH_MINING"], - 1, + ["TECH_MINING", "TECH_BRONZE_WORKING"], + 2, "DEFAULT", ), CivVIBoostData( @@ -165,15 +165,9 @@ "BOOST_TECH_CASTLES", "ERA_MEDIEVAL", [ - "CIVIC_DIVINE_RIGHT", - "CIVIC_EXPLORATION", - "CIVIC_REFORMED_CHURCH", "CIVIC_SUFFRAGE", "CIVIC_TOTALITARIANISM", "CIVIC_CLASS_STRUGGLE", - "CIVIC_DIGITAL_DEMOCRACY", - "CIVIC_CORPORATE_LIBERTARIANISM", - "CIVIC_SYNTHETIC_TECHNOCRACY", ], 1, "DEFAULT", @@ -393,9 +387,6 @@ "CIVIC_SUFFRAGE", "CIVIC_TOTALITARIANISM", "CIVIC_CLASS_STRUGGLE", - "CIVIC_DIGITAL_DEMOCRACY", - "CIVIC_CORPORATE_LIBERTARIANISM", - "CIVIC_SYNTHETIC_TECHNOCRACY", ], 1, "DEFAULT", diff --git a/worlds/civ_6/docs/en_Civilization VI.md b/worlds/civ_6/docs/en_Civilization VI.md index 215da00aa4fb..2a5f5fbd7399 100644 --- a/worlds/civ_6/docs/en_Civilization VI.md +++ b/worlds/civ_6/docs/en_Civilization VI.md @@ -20,16 +20,17 @@ A short period after receiving an item, you will get a notification indicating y ## FAQs - Do I need the DLC to play this? - - Yes, you need both Rise & Fall and Gathering Storm. + - You need both expansions, Rise & Fall and Gathering Storm. You do not need the other DLCs but they fully work with this. - Does this work with Multiplayer? - It does not and, despite my best efforts, probably won't until there's a new way for external programs to be able to interact with the game. -- Does my mod that reskins Barbarians as various Pro Wrestlers work with this? - - Only one way to find out! Any mods that modify techs/civics will most likely cause issues, though. +- Does this work with other mods? + - A lot of mods seem to work without issues combined with this, but you should avoid any mods that change things in the tech or civic tree, as even if they would work it could cause issues with the logic. - "Help! I can't see any of the items that have been sent to me!" - Both trees by default will show you the researchable Archipelago locations. To view the normal tree, you can click "Toggle Archipelago Tree" in the top-left corner of the tree view. - "Oh no! I received the Machinery tech and now instead of getting an Archer next turn, I have to wait an additional 10 turns to get a Crossbowman!" - Vanilla prevents you from building units of the same class from an earlier tech level after you have researched a later variant. For example, this could be problematic if someone unlocks Crossbowmen for you right out the gate since you won't be able to make Archers (which have a much lower production cost). -Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to view your unlocked techs, and then can click any tech you have unlocked to toggle whether it is currently active or not. + - Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to view your unlocked techs, and then can click any tech you have unlocked to toggle whether it is currently active or not. + - If you think you should be able to make Field Cannons but seemingly can't try disabling `Telecommunications` - "How does DeathLink work? Am I going to have to start a new game every time one of my friends dies?" - Heavens no, my fellow Archipelago appreciator. When configuring your Archipelago options for Civilization on the options page, there are several choices available for you to fine tune the way you'd like to be punished for the follies of your friends. These include: Having a random unit destroyed, losing a percentage of gold or faith, or even losing a point on your era score. If you can't make up your mind, you can elect to have any of them be selected every time a death link is sent your way. In the event you lose one of your units in combat (this means captured units don't count), then you will send a death link event to the rest of your friends. @@ -39,7 +40,8 @@ Solution: You can now go in to the tech tree, click "Toggle Archipelago Tree" to 1. `TECH_WRITING` 2. `TECH_EDUCATION` 3. `TECH_CHEMISTRY` - - If you want to see the details around each item, you can review [this file](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/civ_6/data/progressive_districts.json). + - An important thing to note is that the seaport is part of progressive industrial zones, due to electricity having both an industrial zone building and the seaport. + - If you want to see the details around each item, you can review [this file](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/civ_6/data/progressive_districts.py). ## Boostsanity Boostsanity takes all of the Eureka & Inspiration events and makes them location checks. This feature is the one to change up the way Civilization is played in an AP multiworld/randomizer. What normally are mundane tasks that are passively collected now become a novel and interesting bucket list that you need to pay attention to in order to unlock items for yourself and others! @@ -56,4 +58,3 @@ Boosts have logic associated with them in order to verify you can always reach t - The unpredictable timing of boosts and unlocking them can occasionally lead to scenarios where you'll have to first encounter a locked era defeat and then load a previous save. To help reduce the frequency of this, local `PROGRESSIVE_ERA` items will never be located at a boost check. - There's too many boosts, how will I know which one's I should focus on?! - In order to give a little more focus to all the boosts rather than just arbitrarily picking them at random, items in both of the vanilla trees will now have an advisor icon on them if its associated boost contains a progression item. - diff --git a/worlds/civ_6/docs/setup_en.md b/worlds/civ_6/docs/setup_en.md index 9cf4744b6596..fb8404190ff1 100644 --- a/worlds/civ_6/docs/setup_en.md +++ b/worlds/civ_6/docs/setup_en.md @@ -6,12 +6,14 @@ This guide is meant to help you get up and running with Civilization VI in Archi The following are required in order to play Civ VI in Archipelago: -- Windows OS (Firaxis does not support the necessary tooling for Mac, or Linux) +- Windows OS (Firaxis does not support the necessary tooling for Mac, or Linux). -- Installed [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) v0.4.5 or higher. +- Installed [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases). - The latest version of the [Civ VI AP Mod](https://github.com/hesto2/civilization_archipelago_mod/releases/latest). +- A copy of the game `Civilization VI` including the two expansions `Rise & Fall` and `Gathering Storm` (both the Steam and Epic version should work). + ## Enabling the tuner In the main menu, navigate to the "Game Options" page. On the "Game" menu, make sure that "Tuner (disables achievements)" is enabled. @@ -20,27 +22,32 @@ In the main menu, navigate to the "Game Options" page. On the "Game" menu, make 1. Download and unzip the latest release of the mod from [GitHub](https://github.com/hesto2/civilization_archipelago_mod/releases/latest). -2. Copy the folder containing the mod files to your Civ VI mods folder. On Windows, this is usually located at `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods`. If you use OneDrive, check if the folder is instead located in your OneDrive file structure. +2. Copy the folder containing the mod files to your Civ VI mods folder. On Windows, this is usually located at `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods`. If you use OneDrive, check if the folder is instead located in your OneDrive file structure, and use that path when relevant in future steps. 3. After the Archipelago host generates a game, you should be given a `.apcivvi` file. Associate the file with the Archipelago Launcher and double click it. -4. Copy the contents of the new folder it generates (it will have the same name as the `.apcivvi` file) into your Civilization VI Archipelago Mod folder. If double clicking the `.apcivvi` file doesn't generate a folder, you can just rename it to a file ending with `.zip` and extract its contents to a new folder. To do this, right click the `.apcivvi` file and click "Rename", make sure it ends in `.zip`, then right click it again and select "Extract All". - -5. Your finished mod folder should look something like this: +4. Copy the contents of the new folder it generates (it will have the same name as the `.apcivvi` file) into your Civilization VI Archipelago Mod folder. If double clicking the `.apcivvi` file doesn't generate a folder, you can instead open it as a zip file. You can do this by either right clicking it and opening it with a program that handles zip files, or by right clicking and renaming the file extension from `apcivvi` to `zip`. -- Civ VI Mods Directory - - civilization_archipelago_mod - - NewItems.xml - - InitOptions.lua - - Archipelago.modinfo - - All the other mod files, etc. +5. Place the files generated from the `.apcivvi` in your archipelago mod folder (there should be five files placed there from the apcivvi file, overwrite if asked). Your mod path should look something like `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods\civilization_archipelago_mod`. ## Configuring your game -When configuring your game, make sure to start the game in the Ancient Era and leave all settings related to starting technologies and civics as the defaults. Other than that, configure difficulty, AI, etc. as you normally would. +Make sure you enable the mod in the main title under Additional Content > Mods. When configuring your game, make sure to start the game in the Ancient Era and leave all settings related to starting technologies and civics as the defaults. Other than that, configure difficulty, AI, etc. as you normally would. ## Troubleshooting +- If you have troubles with file extension related stuff, make sure Windows shows file extensions as they are turned off by default. If you don't know how to turn them on it is just a quick google search away. + - If you are getting an error: "The remote computer refused the network connection", or something else related to the client (or tuner) not being able to connect, it likely indicates the tuner is not actually enabled. One simple way to verify that it is enabled is, after completing the setup steps, go to Main Menu → Options → Look for an option named "Tuner" and verify it is set to "Enabled" -- If your game gets in a state where someone has sent you items or you have sent locations but these are not correctly sent to the multiworld, you can run `/resync` from the Civ 6 client. This may take up to a minute depending on how many items there are. +- If your game gets in a state where someone has sent you items or you have sent locations but these are not correctly sent to the multiworld, you can run `/resync` from the Civ 6 client. This may take up to a minute depending on how many items there are. This can resend certain items to you, like one time bonuses. + +- If the archipelago mod does not appear in the mod selector in the game, make sure the mod is correctly placed as a folder in the `Sid Meier's Civilization VI\Mods` folder, there should not be any loose files in there only folders. As in the path should look something like `C:\Users\YOUR_USER\Documents\My Games\Sid Meier's Civilization VI\Mods\civilization_archipelago_mod`. + +- If it still does not appear make sure you have the right folder, one way to verify you are in the right place is to find the general folder area where your Civ VI save files are located. + +- If you get an error when trying to start a game saying `Error - One or more Mods failed to load content`, make sure the files from the `.apcivvi` are placed into the `civilization_archipelago_mod` as loose files and not as a folder. + +- If you still have any errors make sure the two expansions Rise & Fall and Gathering Storm are active in the mod selector (all the official DLC works without issues but Rise & Fall and Gathering Storm are required for the mod). + +- If boostsanity is enabled and those items are not being sent out but regular techs are, make sure you placed the files from your new room in the mod folder. diff --git a/worlds/clique/Items.py b/worlds/clique/Items.py deleted file mode 100644 index 81e2540bacc0..000000000000 --- a/worlds/clique/Items.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import Item, ItemClassification - -if TYPE_CHECKING: - from . import CliqueWorld - - -class CliqueItem(Item): - game = "Clique" - - -class CliqueItemData(NamedTuple): - code: Optional[int] = None - type: ItemClassification = ItemClassification.filler - can_create: Callable[["CliqueWorld"], bool] = lambda world: True - - -item_data_table: Dict[str, CliqueItemData] = { - "Feeling of Satisfaction": CliqueItemData( - code=69696969, - type=ItemClassification.progression, - ), - "Button Activation": CliqueItemData( - code=69696968, - type=ItemClassification.progression, - can_create=lambda world: world.options.hard_mode, - ), - "A Cool Filler Item (No Satisfaction Guaranteed)": CliqueItemData( - code=69696967, - can_create=lambda world: False # Only created from `get_filler_item_name`. - ), - "The Urge to Push": CliqueItemData( - type=ItemClassification.progression, - ), -} - -item_table = {name: data.code for name, data in item_data_table.items() if data.code is not None} diff --git a/worlds/clique/Locations.py b/worlds/clique/Locations.py deleted file mode 100644 index 900b497eb4eb..000000000000 --- a/worlds/clique/Locations.py +++ /dev/null @@ -1,37 +0,0 @@ -from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import Location - -if TYPE_CHECKING: - from . import CliqueWorld - - -class CliqueLocation(Location): - game = "Clique" - - -class CliqueLocationData(NamedTuple): - region: str - address: Optional[int] = None - can_create: Callable[["CliqueWorld"], bool] = lambda world: True - locked_item: Optional[str] = None - - -location_data_table: Dict[str, CliqueLocationData] = { - "The Big Red Button": CliqueLocationData( - region="The Button Realm", - address=69696969, - ), - "The Item on the Desk": CliqueLocationData( - region="The Button Realm", - address=69696968, - can_create=lambda world: world.options.hard_mode, - ), - "In the Player's Mind": CliqueLocationData( - region="The Button Realm", - locked_item="The Urge to Push", - ), -} - -location_table = {name: data.address for name, data in location_data_table.items() if data.address is not None} -locked_locations = {name: data for name, data in location_data_table.items() if data.locked_item} diff --git a/worlds/clique/Options.py b/worlds/clique/Options.py deleted file mode 100644 index d88a1289903c..000000000000 --- a/worlds/clique/Options.py +++ /dev/null @@ -1,34 +0,0 @@ -from dataclasses import dataclass -from Options import Choice, Toggle, PerGameCommonOptions, StartInventoryPool - - -class HardMode(Toggle): - """Only for the most masochistically inclined... Requires button activation!""" - display_name = "Hard Mode" - - -class ButtonColor(Choice): - """Customize your button! Now available in 12 unique colors.""" - display_name = "Button Color" - option_red = 0 - option_orange = 1 - option_yellow = 2 - option_green = 3 - option_cyan = 4 - option_blue = 5 - option_magenta = 6 - option_purple = 7 - option_pink = 8 - option_brown = 9 - option_white = 10 - option_black = 11 - - -@dataclass -class CliqueOptions(PerGameCommonOptions): - color: ButtonColor - hard_mode: HardMode - start_inventory_from_pool: StartInventoryPool - - # DeathLink is always on. Always. - # death_link: DeathLink diff --git a/worlds/clique/Regions.py b/worlds/clique/Regions.py deleted file mode 100644 index 04e317067fa1..000000000000 --- a/worlds/clique/Regions.py +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Dict, List, NamedTuple - - -class CliqueRegionData(NamedTuple): - connecting_regions: List[str] = [] - - -region_data_table: Dict[str, CliqueRegionData] = { - "Menu": CliqueRegionData(["The Button Realm"]), - "The Button Realm": CliqueRegionData(), -} diff --git a/worlds/clique/Rules.py b/worlds/clique/Rules.py deleted file mode 100644 index 63ecd4e9e17c..000000000000 --- a/worlds/clique/Rules.py +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Callable, TYPE_CHECKING - -from BaseClasses import CollectionState - -if TYPE_CHECKING: - from . import CliqueWorld - - -def get_button_rule(world: "CliqueWorld") -> Callable[[CollectionState], bool]: - if world.options.hard_mode: - return lambda state: state.has("Button Activation", world.player) - - return lambda state: True diff --git a/worlds/clique/__init__.py b/worlds/clique/__init__.py deleted file mode 100644 index 70777c51b00c..000000000000 --- a/worlds/clique/__init__.py +++ /dev/null @@ -1,102 +0,0 @@ -from typing import List, Dict, Any - -from BaseClasses import Region, Tutorial -from worlds.AutoWorld import WebWorld, World -from .Items import CliqueItem, item_data_table, item_table -from .Locations import CliqueLocation, location_data_table, location_table, locked_locations -from .Options import CliqueOptions -from .Regions import region_data_table -from .Rules import get_button_rule - - -class CliqueWebWorld(WebWorld): - theme = "partyTime" - - setup_en = Tutorial( - tutorial_name="Start Guide", - description="A guide to playing Clique.", - language="English", - file_name="guide_en.md", - link="guide/en", - authors=["Phar"] - ) - - setup_de = Tutorial( - tutorial_name="Anleitung zum Anfangen", - description="Eine Anleitung um Clique zu spielen.", - language="Deutsch", - file_name="guide_de.md", - link="guide/de", - authors=["Held_der_Zeit"] - ) - - tutorials = [setup_en, setup_de] - game_info_languages = ["en", "de"] - - -class CliqueWorld(World): - """The greatest game of all time.""" - - game = "Clique" - web = CliqueWebWorld() - options: CliqueOptions - options_dataclass = CliqueOptions - location_name_to_id = location_table - item_name_to_id = item_table - - def create_item(self, name: str) -> CliqueItem: - return CliqueItem(name, item_data_table[name].type, item_data_table[name].code, self.player) - - def create_items(self) -> None: - item_pool: List[CliqueItem] = [] - for name, item in item_data_table.items(): - if item.code and item.can_create(self): - item_pool.append(self.create_item(name)) - - self.multiworld.itempool += item_pool - - def create_regions(self) -> None: - # Create regions. - for region_name in region_data_table.keys(): - region = Region(region_name, self.player, self.multiworld) - self.multiworld.regions.append(region) - - # Create locations. - for region_name, region_data in region_data_table.items(): - region = self.get_region(region_name) - region.add_locations({ - location_name: location_data.address for location_name, location_data in location_data_table.items() - if location_data.region == region_name and location_data.can_create(self) - }, CliqueLocation) - region.add_exits(region_data_table[region_name].connecting_regions) - - # Place locked locations. - for location_name, location_data in locked_locations.items(): - # Ignore locations we never created. - if not location_data.can_create(self): - continue - - locked_item = self.create_item(location_data_table[location_name].locked_item) - self.get_location(location_name).place_locked_item(locked_item) - - # Set priority location for the Big Red Button! - self.options.priority_locations.value.add("The Big Red Button") - - def get_filler_item_name(self) -> str: - return "A Cool Filler Item (No Satisfaction Guaranteed)" - - def set_rules(self) -> None: - button_rule = get_button_rule(self) - self.get_location("The Big Red Button").access_rule = button_rule - self.get_location("In the Player's Mind").access_rule = button_rule - - # Do not allow button activations on buttons. - self.get_location("The Big Red Button").item_rule = lambda item: item.name != "Button Activation" - - # Completion condition. - self.multiworld.completion_condition[self.player] = lambda state: state.has("The Urge to Push", self.player) - - def fill_slot_data(self) -> Dict[str, Any]: - return { - "color": self.options.color.current_key - } diff --git a/worlds/clique/docs/de_Clique.md b/worlds/clique/docs/de_Clique.md deleted file mode 100644 index cde0a23cf6fe..000000000000 --- a/worlds/clique/docs/de_Clique.md +++ /dev/null @@ -1,18 +0,0 @@ -# Clique - -## Was ist das für ein Spiel? - -~~Clique ist ein psychologisches Überlebens-Horror Spiel, in dem der Spieler der Versuchung wiederstehen muss große~~ -~~(rote) Knöpfe zu drücken.~~ - -Clique ist ein scherzhaftes Spiel, welches für Archipelago im März 2023 entwickelt wurde, um zu zeigen, wie einfach -es sein kann eine Welt für Archipelago zu entwicklen. Das Ziel des Spiels ist es den großen (standardmäßig) roten -Knopf zu drücken. Wenn ein Spieler auf dem `hard_mode` (schwieriger Modus) spielt, muss dieser warten bis jemand -anderes in der Multiworld den Knopf aktiviert, damit er gedrückt werden kann. - -Clique kann auf den meisten modernen, HTML5-fähigen Browsern gespielt werden. - -## Wo ist die Seite für die Einstellungen? - -Die [Seite für die Spielereinstellungen dieses Spiels](../player-options) enthält alle Optionen die man benötigt um -eine YAML-Datei zu konfigurieren und zu exportieren. diff --git a/worlds/clique/docs/en_Clique.md b/worlds/clique/docs/en_Clique.md deleted file mode 100644 index e9cb164fecbf..000000000000 --- a/worlds/clique/docs/en_Clique.md +++ /dev/null @@ -1,16 +0,0 @@ -# Clique - -## What is this game? - -~~Clique is a psychological survival horror game where a player must survive the temptation to press red buttons.~~ - -Clique is a joke game developed for Archipelago in March 2023 to showcase how easy it can be to develop a world for -Archipelago. The objective of the game is to press the big red button. If a player is playing on `hard_mode`, they must -wait for someone else in the multiworld to "activate" their button before they can press it. - -Clique can be played on most modern HTML5-capable browsers. - -## Where is the options page? - -The [player options page for this game](../player-options) contains all the options you need to configure -and export a config file. diff --git a/worlds/clique/docs/guide_de.md b/worlds/clique/docs/guide_de.md deleted file mode 100644 index 26e08dbbdd7e..000000000000 --- a/worlds/clique/docs/guide_de.md +++ /dev/null @@ -1,25 +0,0 @@ -# Clique Anleitung - -Nachdem dein Seed generiert wurde, gehe auf die Website von [Clique dem Spiel](http://clique.pharware.com/) und gib -Server-Daten, deinen Slot-Namen und ein Passwort (falls vorhanden) ein. Klicke dann auf "Connect" (Verbinden). - -Wenn du auf "Einfach" spielst, kannst du unbedenklich den Knopf drücken und deine "Befriedigung" erhalten. - -Wenn du auf "Schwer" spielst, ist es sehr wahrscheinlich, dass du warten musst bevor du dein Ziel erreichen kannst. -Glücklicherweise läuft Click auf den meißten großen Browsern, die HTML5 unterstützen. Das heißt du kannst Clique auf -deinem Handy starten und produktiv sein während du wartest! - -Falls du einige Ideen brauchst was du tun kannst, während du wartest bis der Knopf aktiviert wurde, versuche -(mindestens) eins der Folgenden: - -- Dein Zimmer aufräumen. -- Die Wäsche machen. -- Etwas Essen von einem X-Belieben Fast Food Restaruant holen. -- Das tägliche Wordle machen. -- ~~Deine Seele an **Phar** verkaufen.~~ -- Deine Hausaufgaben erledigen. -- Deine Post abholen. - - -~~Solltest du auf irgendwelche Probleme in diesem Spiel stoßen, solltest du keinesfalls nicht **thephar** auf~~ -~~Discord kontaktieren. *zwinker* *zwinker*~~ diff --git a/worlds/clique/docs/guide_en.md b/worlds/clique/docs/guide_en.md deleted file mode 100644 index c3c113fe9056..000000000000 --- a/worlds/clique/docs/guide_en.md +++ /dev/null @@ -1,22 +0,0 @@ -# Clique Start Guide - -After rolling your seed, go to the [Clique Game](http://clique.pharware.com/) site and enter the server details, your -slot name, and a room password if one is required. Then click "Connect". - -If you're playing on "easy mode", just click the button and receive "Satisfaction". - -If you're playing on "hard mode", you may need to wait for activation before you can complete your objective. Luckily, -Clique runs in most major browsers that support HTML5, so you can load Clique on your phone and be productive while -you wait! - -If you need some ideas for what to do while waiting for button activation, give the following a try: - -- Clean your room. -- Wash the dishes. -- Get some food from a non-descript fast food restaurant. -- Do the daily Wordle. -- ~~Sell your soul to Phar.~~ -- Do your school work. - - -~~If you run into any issues with this game, definitely do not contact **thephar** on discord. *wink* *wink*~~ diff --git a/worlds/cv64/data/patches.py b/worlds/cv64/data/patches.py index 6ef4eafb67d3..4a964612f03e 100644 --- a/worlds/cv64/data/patches.py +++ b/worlds/cv64/data/patches.py @@ -2893,3 +2893,18 @@ 0x25291CB8, # ADDIU T1, T1, 0x1CB8 0x01200008 # JR T1 ] + +shimmy_speed_modifier = [ + # Increases the player's speed while shimmying as long as they are not holding down Z. If they are holding Z, it + # will be the normal speed, allowing it to still be used to set up any tricks that might require the normal speed + # (like Left Tower Skip). + 0x3C088038, # LUI T0, 0x8038 + 0x91087D7E, # LBU T0, 0x7D7E (T0) + 0x31090020, # ANDI T1, T0, 0x0020 + 0x3C0A800A, # LUI T2, 0x800A + 0x240B005A, # ADDIU T3, R0, 0x005A + 0x55200001, # BNEZL T1, [forward 0x01] + 0x240B0032, # ADDIU T3, R0, 0x0032 + 0xA14B3641, # SB T3, 0x3641 (T2) + 0x0800B7C3 # J 0x8002DF0C +] diff --git a/worlds/cv64/options.py b/worlds/cv64/options.py index 07e86347bda6..da1e1aba9440 100644 --- a/worlds/cv64/options.py +++ b/worlds/cv64/options.py @@ -424,6 +424,7 @@ class PantherDash(Choice): class IncreaseShimmySpeed(Toggle): """ Increases the speed at which characters shimmy left and right while hanging on ledges. + Hold Z to use the regular speed in case it's needed to do something. """ display_name = "Increase Shimmy Speed" diff --git a/worlds/cv64/rom.py b/worlds/cv64/rom.py index 1833c7812bc3..830bed27796e 100644 --- a/worlds/cv64/rom.py +++ b/worlds/cv64/rom.py @@ -607,9 +607,10 @@ def apply_patches(caller: APProcedurePatch, rom: bytes, options_file: str) -> by rom_data.write_int32(0xAA530, 0x080FF880) # J 0x803FE200 rom_data.write_int32s(0xBFE200, patches.coffin_cutscene_skipper) - # Increase shimmy speed + # Shimmy speed increase hack if options["increase_shimmy_speed"]: - rom_data.write_byte(0xA4241, 0x5A) + rom_data.write_int32(0x97EB4, 0x803FE9F0) + rom_data.write_int32s(0xBFE9F0, patches.shimmy_speed_modifier) # Disable landing fall damage if options["fall_guard"]: diff --git a/worlds/cvcotm/__init__.py b/worlds/cvcotm/__init__.py index 0f5077e7098a..a2d52b3ecc41 100644 --- a/worlds/cvcotm/__init__.py +++ b/worlds/cvcotm/__init__.py @@ -211,7 +211,8 @@ def fill_slot_data(self) -> dict: "ignore_cleansing": self.options.ignore_cleansing.value, "skip_tutorials": self.options.skip_tutorials.value, "required_last_keys": self.required_last_keys, - "completion_goal": self.options.completion_goal.value} + "completion_goal": self.options.completion_goal.value, + "nerf_roc_wing": self.options.nerf_roc_wing.value} def get_filler_item_name(self) -> str: return self.random.choice(FILLER_ITEM_NAMES) diff --git a/worlds/cvcotm/aesthetics.py b/worlds/cvcotm/aesthetics.py index d1668b1db18d..86134f8e0954 100644 --- a/worlds/cvcotm/aesthetics.py +++ b/worlds/cvcotm/aesthetics.py @@ -48,11 +48,17 @@ class OtherGameAppearancesInfo(TypedDict): other_game_item_appearances: Dict[str, Dict[str, OtherGameAppearancesInfo]] = { - # NOTE: Symphony of the Night is currently an unsupported world not in main. + # NOTE: Symphony of the Night and Harmony of Dissonance are custom worlds that are not core verified. "Symphony of the Night": {"Life Vessel": {"type": 0xE4, "appearance": 0x01}, "Heart Vessel": {"type": 0xE4, "appearance": 0x00}}, + + "Castlevania - Harmony of Dissonance": {"Life Max Up": {"type": 0xE4, + "appearance": 0x01}, + "Heart Max Up": {"type": 0xE4, + "appearance": 0x00}}, + "Timespinner": {"Max HP": {"type": 0xE4, "appearance": 0x01}, "Max Aura": {"type": 0xE4, @@ -728,8 +734,8 @@ def get_start_inventory_data(world: "CVCotMWorld") -> Tuple[Dict[int, bytes], bo magic_items_array[array_offset] += 1 # Add the start inventory arrays to the offset data in bytes form. - start_inventory_data[0x680080] = bytes(magic_items_array) - start_inventory_data[0x6800A0] = bytes(cards_array) + start_inventory_data[0x690080] = bytes(magic_items_array) + start_inventory_data[0x6900A0] = bytes(cards_array) # Add the extra max HP/MP/Hearts to all classes' base stats. Doing it this way makes us less likely to hit the max # possible Max Ups. diff --git a/worlds/cvcotm/data/patches.py b/worlds/cvcotm/data/patches.py index c2a9aa791f91..37fba3bd40e3 100644 --- a/worlds/cvcotm/data/patches.py +++ b/worlds/cvcotm/data/patches.py @@ -132,40 +132,40 @@ # Magic Items 0x13, 0x48, # ldr r0, =0x202572F - 0x14, 0x49, # ldr r1, =0x8680080 + 0x14, 0x49, # ldr r1, =0x8690080 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x08, 0x2A, # cmp r2, #8 - 0xFA, 0xDB, # blt 0x8680006 + 0xFA, 0xDB, # blt 0x8690006 # Max Ups 0x11, 0x48, # ldr r0, =0x202572C - 0x12, 0x49, # ldr r1, =0x8680090 + 0x12, 0x49, # ldr r1, =0x8690090 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x03, 0x2A, # cmp r2, #3 - 0xFA, 0xDB, # blt 0x8680016 + 0xFA, 0xDB, # blt 0x8690016 # Cards 0x0F, 0x48, # ldr r0, =0x2025674 - 0x10, 0x49, # ldr r1, =0x86800A0 + 0x10, 0x49, # ldr r1, =0x86900A0 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x14, 0x2A, # cmp r2, #0x14 - 0xFA, 0xDB, # blt 0x8680026 + 0xFA, 0xDB, # blt 0x8690026 # Inventory Items (not currently supported) 0x0D, 0x48, # ldr r0, =0x20256ED - 0x0E, 0x49, # ldr r1, =0x86800C0 + 0x0E, 0x49, # ldr r1, =0x86900C0 0x00, 0x22, # mov r2, #0 0x8B, 0x5C, # ldrb r3, [r1, r2] 0x83, 0x54, # strb r3, [r0, r2] 0x01, 0x32, # adds r2, #1 0x36, 0x2A, # cmp r2, #36 - 0xFA, 0xDB, # blt 0x8680036 + 0xFA, 0xDB, # blt 0x8690036 # Return to the function that checks for Magician Mode. 0xBA, 0x21, # movs r1, #0xBA 0x89, 0x00, # lsls r1, r1, #2 @@ -176,13 +176,13 @@ # LDR number pool 0x78, 0x7F, 0x00, 0x08, 0x2F, 0x57, 0x02, 0x02, - 0x80, 0x00, 0x68, 0x08, + 0x80, 0x00, 0x69, 0x08, 0x2C, 0x57, 0x02, 0x02, - 0x90, 0x00, 0x68, 0x08, + 0x90, 0x00, 0x69, 0x08, 0x74, 0x56, 0x02, 0x02, - 0xA0, 0x00, 0x68, 0x08, + 0xA0, 0x00, 0x69, 0x08, 0xED, 0x56, 0x02, 0x02, - 0xC0, 0x00, 0x68, 0x08, + 0xC0, 0x00, 0x69, 0x08, ] max_max_up_checker = [ diff --git a/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md b/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md index 695c5f0ff9c8..611a1a376e2a 100644 --- a/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md +++ b/worlds/cvcotm/docs/en_Castlevania - Circle of the Moon.md @@ -3,7 +3,7 @@ ## Quick Links - [Setup](/tutorial/Castlevania%20-%20Circle%20of%20the%20Moon/setup/en) - [Options Page](/games/Castlevania%20-%20Circle%20of%20the%20Moon/player-options) -- [PopTracker Pack](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest) +- [PopTracker Pack](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest) - [Repo for the original, standalone CotMR](https://github.com/calm-palm/cotm-randomizer) - [Web version of the above randomizer](https://rando.circleofthemoon.com/) - [A more in-depth guide to CotMR's nuances](https://docs.google.com/document/d/1uot4BD9XW7A--A8ecgoY8mLK_vSoQRpY5XCkzgas87c/view?usp=sharing) diff --git a/worlds/cvcotm/docs/setup_en.md b/worlds/cvcotm/docs/setup_en.md index 459e0d6afb97..4c34dcb836ef 100644 --- a/worlds/cvcotm/docs/setup_en.md +++ b/worlds/cvcotm/docs/setup_en.md @@ -22,7 +22,7 @@ clear it. ## Optional Software -- [Castlevania: Circle of the Moon AP Tracker](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest), for use with +- [Castlevania: Circle of the Moon AP Tracker](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases). ## Generating and Patching a Game @@ -64,7 +64,7 @@ perfectly safe to make progress offline; everything will re-sync when you reconn Castlevania: Circle of the Moon has a fully functional map tracker that supports auto-tracking. -1. Download [Castlevania: Circle of the Moon AP Tracker](https://github.com/sassyvania/Circle-of-the-Moon-Rando-AP-Map-Tracker-/releases/latest) and +1. Download [Castlevania: Circle of the Moon AP Tracker](https://github.com/BowserCrusher/Circle-of-the-Moon-AP-Tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Put the tracker pack into `packs/` in your PopTracker install. 3. Open PopTracker, and load the Castlevania: Circle of the Moon pack. diff --git a/worlds/cvcotm/rom.py b/worlds/cvcotm/rom.py index 6ae0b6e43863..350829292b34 100644 --- a/worlds/cvcotm/rom.py +++ b/worlds/cvcotm/rom.py @@ -335,8 +335,8 @@ def apply_patches(caller: APProcedurePatch, rom: bytes, options_file: str) -> by rom_data.write_bytes(0x679A60, patches.kickless_roc_height_shortener) # Give the player their Start Inventory upon entering their name on a new file. - rom_data.write_bytes(0x7F70, [0x00, 0x48, 0x87, 0x46, 0x00, 0x00, 0x68, 0x08]) - rom_data.write_bytes(0x680000, patches.start_inventory_giver) + rom_data.write_bytes(0x7F70, [0x00, 0x48, 0x87, 0x46, 0x00, 0x00, 0x69, 0x08]) + rom_data.write_bytes(0x690000, patches.start_inventory_giver) # Prevent Max Ups from exceeding 255. rom_data.write_bytes(0x5E170, [0x00, 0x4A, 0x97, 0x46, 0x00, 0x00, 0x6A, 0x08]) diff --git a/worlds/dark_souls_3/Items.py b/worlds/dark_souls_3/Items.py index 044e3616f703..0980781ae882 100644 --- a/worlds/dark_souls_3/Items.py +++ b/worlds/dark_souls_3/Items.py @@ -511,7 +511,7 @@ def event(name: str, player: int) -> "DarkSouls3Item": DS3ItemData("Elkhorn Round Shield", 0x0133C510, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Warrior's Round Shield", 0x0133EC20, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Caduceus Round Shield", 0x01341330, DS3ItemCategory.SHIELD_INFUSIBLE), - DS3ItemData("Red and White Shield", 0x01343A40, DS3ItemCategory.SHIELD_INFUSIBLE), + DS3ItemData("Red and White Round Shield", 0x01343A40, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Blessed Red and White Shield+1", 0x01343FB9, DS3ItemCategory.SHIELD), DS3ItemData("Plank Shield", 0x01346150, DS3ItemCategory.SHIELD_INFUSIBLE), DS3ItemData("Leather Shield", 0x01348860, DS3ItemCategory.SHIELD_INFUSIBLE), diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index c5cdbba85d82..b4e45fb57791 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -706,7 +706,7 @@ def __init__( DS3LocationData("US: Whip - back alley, behind wooden wall", "Whip", hidden=True), DS3LocationData("US: Great Scythe - building by white tree, balcony", "Great Scythe"), DS3LocationData("US: Homeward Bone - foot, drop overlook", "Homeward Bone", - static='02,0:53100540::'), + static='02,0:53100950::'), DS3LocationData("US: Large Soul of a Deserted Corpse - around corner by Cliff Underside", "Large Soul of a Deserted Corpse", hidden=True), # Hidden corner DS3LocationData("US: Ember - behind burning tree", "Ember"), @@ -732,8 +732,9 @@ def __init__( missable=True), # requires projectile DS3LocationData("US: Flame Stoneplate Ring - hanging corpse by Mound-Maker transport", "Flame Stoneplate Ring"), - DS3LocationData("US: Red and White Shield - chasm, hanging corpse", "Red and White Shield", - static="02,0:53100740::", missable=True), # requires projectile + DS3LocationData("US: Red and White Round Shield - chasm, hanging corpse", + "Red and White Round Shield", static="02,0:53100740::", + missable=True), # requires projectile DS3LocationData("US: Small Leather Shield - first building, hanging corpse by entrance", "Small Leather Shield"), DS3LocationData("US: Pale Tongue - tower village, hanging corpse", "Pale Tongue"), @@ -883,7 +884,7 @@ def __init__( DS3LocationData("RS: Homeward Bone - balcony by Farron Keep", "Homeward Bone x2"), DS3LocationData("RS: Titanite Shard - woods, surrounded by enemies", "Titanite Shard"), DS3LocationData("RS: Twin Dragon Greatshield - woods by Crucifixion Woods bonfire", - "Twin Dragon Greatshield"), + "Twin Dragon Greatshield", missable=True), # After Eclipse DS3LocationData("RS: Sorcerer Hood - water beneath stronghold", "Sorcerer Hood", hidden=True), # Hidden fall DS3LocationData("RS: Sorcerer Robe - water beneath stronghold", "Sorcerer Robe", @@ -1886,7 +1887,7 @@ def __init__( DS3LocationData("AL: Twinkling Titanite - lizard after light cathedral #2", "Twinkling Titanite", lizard=True), DS3LocationData("AL: Aldrich's Ruby - dark cathedral, miniboss", "Aldrich's Ruby", - miniboss=True), # Deep Accursed drop + miniboss=True, missable=True), # Deep Accursed drop, missable after defeating Aldrich DS3LocationData("AL: Aldrich Faithful - water reserves, talk to McDonnel", "Aldrich Faithful", hidden=True), # Behind illusory wall diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index b9f32a8d4015..6584ccec8778 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -75,6 +75,13 @@ class DarkSouls3World(World): """The pool of all items within this particular world. This is a subset of `self.multiworld.itempool`.""" + missable_dupe_prog_locs: Set[str] = {"PC: Storm Ruler - Siegward", + "US: Pyromancy Flame - Cornyx", + "US: Tower Key - kill Irina"} + """Locations whose vanilla item is a missable duplicate of a non-missable progression item. + If vanilla, these locations shouldn't be expected progression, so they aren't created and don't get rules. + """ + def __init__(self, multiworld: MultiWorld, player: int): super().__init__(multiworld, player) self.all_excluded_locations = set() @@ -258,10 +265,7 @@ def create_region(self, region_name, location_table) -> Region: new_location.progress_type = LocationProgressType.EXCLUDED else: # Don't allow missable duplicates of progression items to be expected progression. - if location.name in {"PC: Storm Ruler - Siegward", - "US: Pyromancy Flame - Cornyx", - "US: Tower Key - kill Irina"}: - continue + if location.name in self.missable_dupe_prog_locs: continue # Replace non-randomized items with events that give the default item event_item = ( @@ -273,9 +277,7 @@ def create_region(self, region_name, location_table) -> Region: self.player, location, parent = new_region, - event = True, ) - event_item.code = None new_location.place_locked_item(event_item) if location.name in excluded: excluded.remove(location.name) @@ -707,7 +709,7 @@ def set_rules(self) -> None: if self._is_location_available("US: Young White Branch - by white tree #2"): self._add_item_rule( "US: Young White Branch - by white tree #2", - lambda item: item.player == self.player and not item.data.unique + lambda item: item.player != self.player or not item.data.unique ) # Make sure the Storm Ruler is available BEFORE Yhorm the Giant @@ -1288,8 +1290,9 @@ def _add_location_rule(self, location: Union[str, List[str]], rule: Union[Collec data = location_dictionary[location] if data.dlc and not self.options.enable_dlc: continue if data.ngp and not self.options.enable_ngp: continue + # Don't add rules to missable duplicates of progression items + if location in self.missable_dupe_prog_locs and not self._is_location_available(location): continue - if not self._is_location_available(location): continue if isinstance(rule, str): assert item_dictionary[rule].classification == ItemClassification.progression rule = lambda state, item=rule: state.has(item, self.player) diff --git a/worlds/dark_souls_3/docs/locations_en.md b/worlds/dark_souls_3/docs/locations_en.md index 8411b8c42aa0..4f0160a96d99 100644 --- a/worlds/dark_souls_3/docs/locations_en.md +++ b/worlds/dark_souls_3/docs/locations_en.md @@ -2239,7 +2239,7 @@ static _Dark Souls III_ randomizer]. US: Pyromancy Flame - CornyxGiven by Cornyx in Firelink Shrine or dropped. US: Red Bug Pellet - tower village building, basementOn the floor of the building after the Fire Demon encounter US: Red Hilted Halberd - chasm cryptIn the skeleton area accessible from Grave Key or dropping down from near Eygon -US: Red and White Shield - chasm, hanging corpseOn a hanging corpse in the ravine accessible with the Grave Key or dropping down near Eygon, to the entrance of Irina's prison. Must be shot down with an arrow or projective. +US: Red and White Round Shield - chasm, hanging corpseOn a hanging corpse in the ravine accessible with the Grave Key or dropping down near Eygon, to the entrance of Irina's prison. Must be shot down with an arrow or projective. US: Reinforced Club - by white treeNear the Birch Tree where giant shoots arrows US: Repair Powder - first building, balconyOn the balcony of the first Undead Settlement building US: Rusted Coin - awning above Dilapidated BridgeOn a wooden ledge near the Dilapidated Bridge bonfire. Must be jumped to from near Cathedral Evangelist enemy diff --git a/worlds/dark_souls_3/docs/setup_en.md b/worlds/dark_souls_3/docs/setup_en.md index 4c3a6b2a7d60..4b11c8a498d9 100644 --- a/worlds/dark_souls_3/docs/setup_en.md +++ b/worlds/dark_souls_3/docs/setup_en.md @@ -73,7 +73,7 @@ things to keep in mind: * To run the game itself, just run `launchmod_darksouls3.bat` under Proton. -[.NET Runtime]: https://dotnet.microsoft.com/en-us/download/dotnet/8.0 +[.NET Runtime]: https://dotnet.microsoft.com/en-us/download/dotnet/6.0 [WINE]: https://www.winehq.org/ ## Troubleshooting diff --git a/worlds/dkc3/Regions.py b/worlds/dkc3/Regions.py index 6e968dbe1e30..c6c7dd362efd 100644 --- a/worlds/dkc3/Regions.py +++ b/worlds/dkc3/Regions.py @@ -802,8 +802,10 @@ def connect_regions(world: World, level_list): for i in range(0, len(kremwood_forest_levels) - 1): connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[i]) - connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1], - lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", world.player))) + connection = connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1], + lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", world.player))) + world.multiworld.register_indirect_condition(world.get_location(LocationName.riverside_race_flag).parent_region, + connection) # Cotton-Top Cove Connections cotton_top_cove_levels = [ @@ -837,8 +839,11 @@ def connect_regions(world: World, level_list): connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region, lambda state: (state.has(ItemName.bowling_ball, world.player, 1))) else: - connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region, - lambda state: (state.can_reach(LocationName.bleaks_house, "Location", world.player))) + connection = connect(world, world.player, names, LocationName.mekanos_region, + LocationName.sky_high_secret_region, + lambda state: (state.can_reach(LocationName.bleaks_house, "Location", world.player))) + world.multiworld.register_indirect_condition(world.get_location(LocationName.bleaks_house).parent_region, + connection) # K3 Connections k3_levels = [ @@ -946,3 +951,4 @@ def connect(world: World, player: int, used_names: typing.Dict[str, int], source source_region.exits.append(connection) connection.connect(target_region) + return connection diff --git a/worlds/dlcquest/Items.py b/worlds/dlcquest/Items.py index 550d92419ba9..5496885a74f7 100644 --- a/worlds/dlcquest/Items.py +++ b/worlds/dlcquest/Items.py @@ -30,7 +30,6 @@ class Group(enum.Enum): Deprecated = enum.auto() - @dataclass(frozen=True) class ItemData: code_without_offset: offset @@ -98,14 +97,15 @@ def create_trap_items(world, world_options: Options.DLCQuestOptions, trap_needed return traps -def create_items(world, world_options: Options.DLCQuestOptions, locations_count: int, excluded_items: list[str], random: Random): +def create_items(world, world_options: Options.DLCQuestOptions, locations_count: int, excluded_items: list[str], + random: Random): created_items = [] if world_options.campaign == Options.Campaign.option_basic or world_options.campaign == Options.Campaign.option_both: - create_items_basic(world_options, created_items, world, excluded_items) + create_items_campaign(world_options, created_items, world, excluded_items, Group.DLCQuest, 825, 250) if (world_options.campaign == Options.Campaign.option_live_freemium_or_die or world_options.campaign == Options.Campaign.option_both): - create_items_lfod(world_options, created_items, world, excluded_items) + create_items_campaign(world_options, created_items, world, excluded_items, Group.Freemium, 889, 200) trap_items = create_trap_items(world, world_options, locations_count - len(created_items), random) created_items += trap_items @@ -113,27 +113,8 @@ def create_items(world, world_options: Options.DLCQuestOptions, locations_count: return created_items -def create_items_lfod(world_options, created_items, world, excluded_items): - for item in items_by_group[Group.Freemium]: - if item.name in excluded_items: - excluded_items.remove(item) - continue - - if item.has_any_group(Group.DLC): - created_items.append(world.create_item(item)) - if item.has_any_group(Group.Item) and world_options.item_shuffle == Options.ItemShuffle.option_shuffled: - created_items.append(world.create_item(item)) - if item.has_any_group(Group.Twice): - created_items.append(world.create_item(item)) - if world_options.coinsanity == Options.CoinSanity.option_coin: - if world_options.coinbundlequantity == -1: - create_coin_piece(created_items, world, 889, 200, Group.Freemium) - return - create_coin(world_options, created_items, world, 889, 200, Group.Freemium) - - -def create_items_basic(world_options, created_items, world, excluded_items): - for item in items_by_group[Group.DLCQuest]: +def create_items_campaign(world_options: Options.DLCQuestOptions, created_items: list[DLCQuestItem], world, excluded_items: list[str], group: Group, total_coins: int, required_coins: int): + for item in items_by_group[group]: if item.name in excluded_items: excluded_items.remove(item.name) continue @@ -146,14 +127,15 @@ def create_items_basic(world_options, created_items, world, excluded_items): created_items.append(world.create_item(item)) if world_options.coinsanity == Options.CoinSanity.option_coin: if world_options.coinbundlequantity == -1: - create_coin_piece(created_items, world, 825, 250, Group.DLCQuest) + create_coin_piece(created_items, world, total_coins, required_coins, group) return - create_coin(world_options, created_items, world, 825, 250, Group.DLCQuest) + create_coin(world_options, created_items, world, total_coins, required_coins, group) def create_coin(world_options, created_items, world, total_coins, required_coins, group): coin_bundle_required = math.ceil(required_coins / world_options.coinbundlequantity) - coin_bundle_useful = math.ceil((total_coins - coin_bundle_required * world_options.coinbundlequantity) / world_options.coinbundlequantity) + coin_bundle_useful = math.ceil( + (total_coins - coin_bundle_required * world_options.coinbundlequantity) / world_options.coinbundlequantity) for item in items_by_group[group]: if item.has_any_group(Group.Coin): for i in range(coin_bundle_required): @@ -165,7 +147,7 @@ def create_coin(world_options, created_items, world, total_coins, required_coins def create_coin_piece(created_items, world, total_coins, required_coins, group): for item in items_by_group[group]: if item.has_any_group(Group.Piece): - for i in range(required_coins*10): + for i in range(required_coins * 10): created_items.append(world.create_item(item)) for i in range((total_coins - required_coins) * 10): created_items.append(world.create_item(item, ItemClassification.useful)) diff --git a/worlds/dlcquest/Rules.py b/worlds/dlcquest/Rules.py index 3461d0633ef1..5dfd80165a01 100644 --- a/worlds/dlcquest/Rules.py +++ b/worlds/dlcquest/Rules.py @@ -280,16 +280,19 @@ def set_boss_door_requirements_rules(player, world): set_rule(world.get_entrance("Boss Door", player), has_3_swords) -def set_lfod_self_obtained_items_rules(world_options, player, world): +def set_lfod_self_obtained_items_rules(world_options, player, multiworld): if world_options.item_shuffle != Options.ItemShuffle.option_disabled: return - set_rule(world.get_entrance("Vines", player), + world = multiworld.worlds[player] + set_rule(world.get_entrance("Vines"), lambda state: state.has("Incredibly Important Pack", player)) - set_rule(world.get_entrance("Behind Rocks", player), + set_rule(world.get_entrance("Behind Rocks"), lambda state: state.can_reach("Cut Content", 'region', player)) - set_rule(world.get_entrance("Pickaxe Hard Cave", player), + multiworld.register_indirect_condition(world.get_region("Cut Content"), world.get_entrance("Behind Rocks")) + set_rule(world.get_entrance("Pickaxe Hard Cave"), lambda state: state.can_reach("Cut Content", 'region', player) and state.has("Name Change Pack", player)) + multiworld.register_indirect_condition(world.get_region("Cut Content"), world.get_entrance("Pickaxe Hard Cave")) def set_lfod_shuffled_items_rules(world_options, player, world): diff --git a/worlds/factorio/Client.py b/worlds/factorio/Client.py index 7aeb30cb2da4..d7992c327635 100644 --- a/worlds/factorio/Client.py +++ b/worlds/factorio/Client.py @@ -9,7 +9,6 @@ import re import string import subprocess - import sys import time import typing @@ -17,15 +16,16 @@ import factorio_rcon -import Utils from CommonClient import ClientCommandProcessor, CommonContext, logger, server_loop, gui_enabled, get_base_parser from MultiServer import mark_raw from NetUtils import ClientStatus, NetworkItem, JSONtoTextParser, JSONMessagePart -from Utils import async_start, get_file_safe_name +from Utils import async_start, get_file_safe_name, is_windows, Version, format_SI_prefix, get_text_between +from .settings import FactorioSettings +from settings import get_settings def check_stdin() -> None: - if Utils.is_windows and sys.stdin: + if is_windows and sys.stdin: print("WARNING: Console input is not routed reliably on Windows, use the GUI instead.") @@ -67,9 +67,11 @@ class FactorioContext(CommonContext): items_handling = 0b111 # full remote # updated by spinup server - mod_version: Utils.Version = Utils.Version(0, 0, 0) + mod_version: Version = Version(0, 0, 0) - def __init__(self, server_address, password, filter_item_sends: bool, bridge_chat_out: bool): + def __init__(self, server_address, password, filter_item_sends: bool, bridge_chat_out: bool, + rcon_port: int, rcon_password: str, server_settings_path: str | None, + factorio_server_args: tuple[str, ...]): super(FactorioContext, self).__init__(server_address, password) self.send_index: int = 0 self.rcon_client = None @@ -82,6 +84,10 @@ def __init__(self, server_address, password, filter_item_sends: bool, bridge_cha self.filter_item_sends: bool = filter_item_sends self.multiplayer: bool = False # whether multiple different players have connected self.bridge_chat_out: bool = bridge_chat_out + self.rcon_port: int = rcon_port + self.rcon_password: str = rcon_password + self.server_settings_path: str = server_settings_path + self.additional_factorio_server_args = factorio_server_args @property def energylink_key(self) -> str: @@ -126,6 +132,18 @@ def print_to_game(self, text): self.rcon_client.send_command(f"/ap-print [font=default-large-bold]Archipelago:[/font] " f"{text}") + @property + def server_args(self) -> tuple[str, ...]: + if self.server_settings_path: + return ( + "--rcon-port", str(self.rcon_port), + "--rcon-password", self.rcon_password, + "--server-settings", self.server_settings_path, + *self.additional_factorio_server_args) + else: + return ("--rcon-port", str(self.rcon_port), "--rcon-password", self.rcon_password, + *self.additional_factorio_server_args) + @property def energy_link_status(self) -> str: if not self.energy_link_increment: @@ -133,7 +151,7 @@ def energy_link_status(self) -> str: elif self.current_energy_link_value is None: return "Standby" else: - return f"{Utils.format_SI_prefix(self.current_energy_link_value)}J" + return f"{format_SI_prefix(self.current_energy_link_value)}J" def on_deathlink(self, data: dict): if self.rcon_client: @@ -155,10 +173,10 @@ def on_package(self, cmd: str, args: dict): if self.energy_link_increment and args.get("last_deplete", -1) == self.last_deplete: # it's our deplete request gained = int(args["original_value"] - args["value"]) - gained_text = Utils.format_SI_prefix(gained) + "J" + gained_text = format_SI_prefix(gained) + "J" if gained: logger.debug(f"EnergyLink: Received {gained_text}. " - f"{Utils.format_SI_prefix(args['value'])}J remaining.") + f"{format_SI_prefix(args['value'])}J remaining.") self.rcon_client.send_command(f"/ap-energylink {gained}") def on_user_say(self, text: str) -> typing.Optional[str]: @@ -278,7 +296,7 @@ async def game_watcher(ctx: FactorioContext): }])) ctx.rcon_client.send_command( f"/ap-energylink -{value}") - logger.debug(f"EnergyLink: Sent {Utils.format_SI_prefix(value)}J") + logger.debug(f"EnergyLink: Sent {format_SI_prefix(value)}J") await asyncio.sleep(0.1) @@ -311,7 +329,7 @@ async def factorio_server_watcher(ctx: FactorioContext): executable, "--create", savegame_name, "--preset", "archipelago" )) factorio_process = subprocess.Popen((executable, "--start-server", savegame_name, - *(str(elem) for elem in server_args)), + *ctx.server_args), stderr=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.DEVNULL, @@ -331,7 +349,7 @@ async def factorio_server_watcher(ctx: FactorioContext): factorio_queue.task_done() if not ctx.rcon_client and "Starting RCON interface at IP ADDR:" in msg: - ctx.rcon_client = factorio_rcon.RCONClient("localhost", rcon_port, rcon_password, + ctx.rcon_client = factorio_rcon.RCONClient("localhost", ctx.rcon_port, ctx.rcon_password, timeout=5) if not ctx.server: logger.info("Established bridge to Factorio Server. " @@ -422,7 +440,7 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: executable, "--create", savegame_name )) factorio_process = subprocess.Popen( - (executable, "--start-server", savegame_name, *(str(elem) for elem in server_args)), + (executable, "--start-server", savegame_name, *ctx.server_args), stderr=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.DEVNULL, @@ -439,9 +457,9 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: factorio_server_logger.info(msg) if "Loading mod AP-" in msg and msg.endswith("(data.lua)"): parts = msg.split() - ctx.mod_version = Utils.Version(*(int(number) for number in parts[-2].split("."))) + ctx.mod_version = Version(*(int(number) for number in parts[-2].split("."))) elif "Write data path: " in msg: - ctx.write_data_path = Utils.get_text_between(msg, "Write data path: ", " [") + ctx.write_data_path = get_text_between(msg, "Write data path: ", " [") if "AppData" in ctx.write_data_path: logger.warning("It appears your mods are loaded from Appdata, " "this can lead to problems with multiple Factorio instances. " @@ -451,7 +469,7 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: "or a Factorio sharing data directories is already running. " "Server could not start up.") if not rcon_client and "Starting RCON interface at IP ADDR:" in msg: - rcon_client = factorio_rcon.RCONClient("localhost", rcon_port, rcon_password) + rcon_client = factorio_rcon.RCONClient("localhost", ctx.rcon_port, ctx.rcon_password) if ctx.mod_version == ctx.__class__.mod_version: raise Exception("No Archipelago mod was loaded. Aborting.") await get_info(ctx, rcon_client) @@ -474,9 +492,8 @@ async def factorio_spinup_server(ctx: FactorioContext) -> bool: return False -async def main(args, filter_item_sends: bool, filter_bridge_chat_out: bool): - ctx = FactorioContext(args.connect, args.password, filter_item_sends, filter_bridge_chat_out) - +async def main(make_context): + ctx = make_context() ctx.server_task = asyncio.create_task(server_loop(ctx), name="ServerLoop") if gui_enabled: @@ -509,38 +526,44 @@ def _handle_color(self, node: JSONMessagePart): return self._handle_text(node) -parser = get_base_parser(description="Optional arguments to FactorioClient follow. " - "Remaining arguments get passed into bound Factorio instance." - "Refer to Factorio --help for those.") -parser.add_argument('--rcon-port', default='24242', type=int, help='Port to use to communicate with Factorio') -parser.add_argument('--rcon-password', help='Password to authenticate with RCON.') -parser.add_argument('--server-settings', help='Factorio server settings configuration file.') - -args, rest = parser.parse_known_args() -rcon_port = args.rcon_port -rcon_password = args.rcon_password if args.rcon_password else ''.join( - random.choice(string.ascii_letters) for x in range(32)) factorio_server_logger = logging.getLogger("FactorioServer") -options = Utils.get_settings() -executable = options["factorio_options"]["executable"] -server_settings = args.server_settings if args.server_settings \ - else options["factorio_options"].get("server_settings", None) -server_args = ("--rcon-port", rcon_port, "--rcon-password", rcon_password) +settings: FactorioSettings = get_settings().factorio_options +if os.path.samefile(settings.executable, sys.executable): + selected_executable = settings.executable + settings.executable = FactorioSettings.executable # reset to default + raise Exception(f"Factorio Client was set to run itself {selected_executable}, aborting process bomb.") + +executable = settings.executable -def launch(): +def launch(*new_args: str): import colorama - global executable, server_settings, server_args + global executable colorama.just_fix_windows_console() + # args handling + parser = get_base_parser(description="Optional arguments to Factorio Client follow. " + "Remaining arguments get passed into bound Factorio instance." + "Refer to Factorio --help for those.") + parser.add_argument('--rcon-port', default='24242', type=int, help='Port to use to communicate with Factorio') + parser.add_argument('--rcon-password', help='Password to authenticate with RCON.') + parser.add_argument('--server-settings', help='Factorio server settings configuration file.') + + args, rest = parser.parse_known_args(args=new_args) + rcon_port = args.rcon_port + rcon_password = args.rcon_password if args.rcon_password else ''.join( + random.choice(string.ascii_letters) for _ in range(32)) + + server_settings = args.server_settings if args.server_settings \ + else getattr(settings, "server_settings", None) + if server_settings: server_settings = os.path.abspath(server_settings) - if not isinstance(options["factorio_options"]["filter_item_sends"], bool): - logging.warning(f"Warning: Option filter_item_sends should be a bool.") - initial_filter_item_sends = bool(options["factorio_options"]["filter_item_sends"]) - if not isinstance(options["factorio_options"]["bridge_chat_out"], bool): - logging.warning(f"Warning: Option bridge_chat_out should be a bool.") - initial_bridge_chat_out = bool(options["factorio_options"]["bridge_chat_out"]) + if not os.path.isfile(server_settings): + raise FileNotFoundError(f"Could not find file {server_settings} for server_settings. Aborting.") + + initial_filter_item_sends = bool(settings.filter_item_sends) + initial_bridge_chat_out = bool(settings.bridge_chat_out) if not os.path.exists(os.path.dirname(executable)): raise FileNotFoundError(f"Path {os.path.dirname(executable)} does not exist or could not be accessed.") @@ -552,14 +575,9 @@ def launch(): else: raise FileNotFoundError(f"Path {executable} is not an executable file.") - if server_settings and os.path.isfile(server_settings): - server_args = ( - "--rcon-port", rcon_port, - "--rcon-password", rcon_password, - "--server-settings", server_settings, - *rest) - else: - server_args = ("--rcon-port", rcon_port, "--rcon-password", rcon_password, *rest) - - asyncio.run(main(args, initial_filter_item_sends, initial_bridge_chat_out)) + asyncio.run(main(lambda: FactorioContext( + args.connect, args.password, + initial_filter_item_sends, initial_bridge_chat_out, + rcon_port, rcon_password, server_settings, rest + ))) colorama.deinit() diff --git a/worlds/factorio/Mod.py b/worlds/factorio/Mod.py index 8ea0b24c3d27..3cc156112d32 100644 --- a/worlds/factorio/Mod.py +++ b/worlds/factorio/Mod.py @@ -63,10 +63,11 @@ } -class FactorioModFile(worlds.Files.APContainer): +class FactorioModFile(worlds.Files.APPlayerContainer): game = "Factorio" compression_method = zipfile.ZIP_DEFLATED # Factorio can't load LZMA archives writing_tasks: List[Callable[[], Tuple[str, Union[str, bytes]]]] + patch_file_ending = ".zip" def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) diff --git a/worlds/factorio/Options.py b/worlds/factorio/Options.py index 12fc90c1fd15..0a789669d5d6 100644 --- a/worlds/factorio/Options.py +++ b/worlds/factorio/Options.py @@ -321,7 +321,7 @@ class InventorySpillTrapCount(TrapCount): class FactorioWorldGen(OptionDict): """World Generation settings. Overview of options at https://wiki.factorio.com/Map_generator, - with in-depth documentation at https://lua-api.factorio.com/latest/Concepts.html#MapGenSettings""" + with in-depth documentation at https://lua-api.factorio.com/latest/concepts/MapGenSettings.html""" display_name = "World Generation" # FIXME: do we want default be a rando-optimized default or in-game DS? value: dict[str, dict[str, typing.Any]] diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index 87e36555a58b..8dc654099bac 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -5,7 +5,6 @@ import typing import Utils -import settings from BaseClasses import Region, Location, Item, Tutorial, ItemClassification from worlds.AutoWorld import World, WebWorld from worlds.LauncherComponents import Component, components, Type, launch as launch_component @@ -20,37 +19,15 @@ progressive_technology_table, common_tech_table, tech_to_progressive_lookup, progressive_tech_table, \ get_science_pack_pools, Recipe, recipes, technology_table, tech_table, factorio_base_id, useless_technologies, \ fluids, stacking_items, valid_ingredients, progressive_rows +from .settings import FactorioSettings -def launch_client(): +def launch_client(*args: str): from .Client import launch - launch_component(launch, name="FactorioClient") + launch_component(launch, name="Factorio Client", args=args) -components.append(Component("Factorio Client", "FactorioClient", func=launch_client, component_type=Type.CLIENT)) - - -class FactorioSettings(settings.Group): - class Executable(settings.UserFilePath): - is_exe = True - - class ServerSettings(settings.OptionalUserFilePath): - """ - by default, no settings are loaded if this file does not exist. \ -If this file does exist, then it will be used. - server_settings: "factorio\\\\data\\\\server-settings.json" - """ - - class FilterItemSends(settings.Bool): - """Whether to filter item send messages displayed in-game to only those that involve you.""" - - class BridgeChatOut(settings.Bool): - """Whether to send chat messages from players on the Factorio server to Archipelago.""" - - executable: Executable = Executable("factorio/bin/x64/factorio") - server_settings: typing.Optional[FactorioSettings.ServerSettings] = None - filter_item_sends: typing.Union[FilterItemSends, bool] = False - bridge_chat_out: typing.Union[BridgeChatOut, bool] = True +components.append(Component("Factorio Client", func=launch_client, component_type=Type.CLIENT)) class FactorioWeb(WebWorld): @@ -115,6 +92,7 @@ class Factorio(World): settings: typing.ClassVar[FactorioSettings] trap_names: tuple[str] = ("Evolution", "Attack", "Teleport", "Grenade", "Cluster Grenade", "Artillery", "Atomic Rocket", "Atomic Cliff Remover", "Inventory Spill") + want_progressives: dict[str, bool] = collections.defaultdict(lambda: False) def __init__(self, world, player: int): super(Factorio, self).__init__(world, player) @@ -133,6 +111,8 @@ def generate_early(self) -> None: self.options.max_tech_cost.value, self.options.min_tech_cost.value self.tech_mix = self.options.tech_cost_mix.value self.skip_silo = self.options.silo.value == Silo.option_spawn + self.want_progressives = collections.defaultdict( + lambda: self.options.progressive.want_progressives(self.random)) def create_regions(self): player = self.player @@ -201,9 +181,6 @@ def create_items(self) -> None: range(getattr(self.options, f"{trap_name.lower().replace(' ', '_')}_traps"))) - want_progressives = collections.defaultdict(lambda: self.options.progressive. - want_progressives(self.random)) - cost_sorted_locations = sorted(self.science_locations, key=lambda location: location.name) special_index = {"automation": 0, "logistics": 1, @@ -218,7 +195,7 @@ def create_items(self) -> None: for tech_name in base_tech_table: if tech_name not in self.removed_technologies: progressive_item_name = tech_to_progressive_lookup.get(tech_name, tech_name) - want_progressive = want_progressives[progressive_item_name] + want_progressive = self.want_progressives[progressive_item_name] item_name = progressive_item_name if want_progressive else tech_name tech_item = self.create_item(item_name) index = special_index.get(tech_name, None) @@ -233,6 +210,12 @@ def create_items(self) -> None: loc.place_locked_item(tech_item) loc.revealed = True + def get_filler_item_name(self) -> str: + tech_name: str = self.random.choice(tuple(tech_table)) + progressive_item_name: str = tech_to_progressive_lookup.get(tech_name, tech_name) + want_progressive: bool = self.want_progressives[progressive_item_name] + return progressive_item_name if want_progressive else tech_name + def set_rules(self): player = self.player shapes = get_shapes(self) diff --git a/worlds/factorio/settings.py b/worlds/factorio/settings.py new file mode 100644 index 000000000000..a2296e7395a0 --- /dev/null +++ b/worlds/factorio/settings.py @@ -0,0 +1,26 @@ +import typing + +import settings + + +class FactorioSettings(settings.Group): + class Executable(settings.UserFilePath): + is_exe = True + + class ServerSettings(settings.OptionalUserFilePath): + """ + by default, no settings are loaded if this file does not exist. \ +If this file does exist, then it will be used. + server_settings: "factorio\\\\data\\\\server-settings.json" + """ + + class FilterItemSends(settings.Bool): + """Whether to filter item send messages displayed in-game to only those that involve you.""" + + class BridgeChatOut(settings.Bool): + """Whether to send chat messages from players on the Factorio server to Archipelago.""" + + executable: Executable = Executable("factorio/bin/x64/factorio") + server_settings: typing.Optional[ServerSettings] = None + filter_item_sends: typing.Union[FilterItemSends, bool] = False + bridge_chat_out: typing.Union[BridgeChatOut, bool] = True diff --git a/worlds/ff1/Client.py b/worlds/ff1/Client.py new file mode 100644 index 000000000000..f7315f69f0ad --- /dev/null +++ b/worlds/ff1/Client.py @@ -0,0 +1,328 @@ +import logging +from collections import deque +from typing import TYPE_CHECKING + +from NetUtils import ClientStatus + +import worlds._bizhawk as bizhawk +from worlds._bizhawk.client import BizHawkClient + +if TYPE_CHECKING: + from worlds._bizhawk.context import BizHawkClientContext + + +base_id = 7000 +logger = logging.getLogger("Client") + + +rom_name_location = 0x07FFE3 +locations_array_start = 0x200 +locations_array_length = 0x100 +items_obtained = 0x03 +gp_location_low = 0x1C +gp_location_middle = 0x1D +gp_location_high = 0x1E +weapons_arrays_starts = [0x118, 0x158, 0x198, 0x1D8] +armors_arrays_starts = [0x11C, 0x15C, 0x19C, 0x1DC] +status_a_location = 0x102 +status_b_location = 0x0FC +status_c_location = 0x0A3 + +key_items = ["Lute", "Crown", "Crystal", "Herb", "Key", "Tnt", "Adamant", "Slab", "Ruby", "Rod", + "Floater", "Chime", "Tail", "Cube", "Bottle", "Oxyale", "EarthOrb", "FireOrb", "WaterOrb", "AirOrb"] + +consumables = ["Shard", "Tent", "Cabin", "House", "Heal", "Pure", "Soft"] + +weapons = ["WoodenNunchucks", "SmallKnife", "WoodenRod", "Rapier", "IronHammer", "ShortSword", "HandAxe", "Scimitar", + "IronNunchucks", "LargeKnife", "IronStaff", "Sabre", "LongSword", "GreatAxe", "Falchon", "SilverKnife", + "SilverSword", "SilverHammer", "SilverAxe", "FlameSword", "IceSword", "DragonSword", "GiantSword", + "SunSword", "CoralSword", "WereSword", "RuneSword", "PowerRod", "LightAxe", "HealRod", "MageRod", "Defense", + "WizardRod", "Vorpal", "CatClaw", "ThorHammer", "BaneSword", "Katana", "Xcalber", "Masamune"] + +armor = ["Cloth", "WoodenArmor", "ChainArmor", "IronArmor", "SteelArmor", "SilverArmor", "FlameArmor", "IceArmor", + "OpalArmor", "DragonArmor", "Copper", "Silver", "Gold", "Opal", "WhiteShirt", "BlackShirt", "WoodenShield", + "IronShield", "SilverShield", "FlameShield", "IceShield", "OpalShield", "AegisShield", "Buckler", "ProCape", + "Cap", "WoodenHelm", "IronHelm", "SilverHelm", "OpalHelm", "HealHelm", "Ribbon", "Gloves", "CopperGauntlets", + "IronGauntlets", "SilverGauntlets", "ZeusGauntlets", "PowerGauntlets", "OpalGauntlets", "ProRing"] + +gold_items = ["Gold10", "Gold20", "Gold25", "Gold30", "Gold55", "Gold70", "Gold85", "Gold110", "Gold135", "Gold155", + "Gold160", "Gold180", "Gold240", "Gold255", "Gold260", "Gold295", "Gold300", "Gold315", "Gold330", + "Gold350", "Gold385", "Gold400", "Gold450", "Gold500", "Gold530", "Gold575", "Gold620", "Gold680", + "Gold750", "Gold795", "Gold880", "Gold1020", "Gold1250", "Gold1455", "Gold1520", "Gold1760", "Gold1975", + "Gold2000", "Gold2750", "Gold3400", "Gold4150", "Gold5000", "Gold5450", "Gold6400", "Gold6720", + "Gold7340", "Gold7690", "Gold7900", "Gold8135", "Gold9000", "Gold9300", "Gold9500", "Gold9900", + "Gold10000", "Gold12350", "Gold13000", "Gold13450", "Gold14050", "Gold14720", "Gold15000", "Gold17490", + "Gold18010", "Gold19990", "Gold20000", "Gold20010", "Gold26000", "Gold45000", "Gold65000"] + +extended_consumables = ["FullCure", "Phoenix", "Blast", "Smoke", + "Refresh", "Flare", "Black", "Guard", + "Quick", "HighPotion", "Wizard", "Cloak"] + +ext_consumables_lookup = {"FullCure": "Ext1", "Phoenix": "Ext2", "Blast": "Ext3", "Smoke": "Ext4", + "Refresh": "Ext1", "Flare": "Ext2", "Black": "Ext3", "Guard": "Ext4", + "Quick": "Ext1", "HighPotion": "Ext2", "Wizard": "Ext3", "Cloak": "Ext4"} + +ext_consumables_locations = {"Ext1": 0x3C, "Ext2": 0x3D, "Ext3": 0x3E, "Ext4": 0x3F} + + +movement_items = ["Ship", "Bridge", "Canal", "Canoe"] + +no_overworld_items = ["Sigil", "Mark"] + + +class FF1Client(BizHawkClient): + game = "Final Fantasy" + system = "NES" + + weapons_queue: deque[int] + armor_queue: deque[int] + consumable_stack_amounts: dict[str, int] | None + + def __init__(self) -> None: + self.wram = "RAM" + self.sram = "WRAM" + self.rom = "PRG ROM" + self.consumable_stack_amounts = None + self.weapons_queue = deque() + self.armor_queue = deque() + self.guard_character = 0x00 + + async def validate_rom(self, ctx: "BizHawkClientContext") -> bool: + try: + # Check ROM name/patch version + rom_name = ((await bizhawk.read(ctx.bizhawk_ctx, [(rom_name_location, 0x0D, self.rom)]))[0]) + rom_name = rom_name.decode("ascii") + if rom_name != "FINAL FANTASY": + return False # Not a Final Fantasy 1 ROM + except bizhawk.RequestFailedError: + return False # Not able to get a response, say no for now + + ctx.game = self.game + ctx.items_handling = 0b111 + ctx.want_slot_data = True + # Resetting these in case of switching ROMs + self.consumable_stack_amounts = None + self.weapons_queue = deque() + self.armor_queue = deque() + + return True + + async def game_watcher(self, ctx: "BizHawkClientContext") -> None: + if ctx.server is None: + return + + if ctx.slot is None: + return + try: + self.guard_character = await self.read_sram_value(ctx, status_a_location) + # If the first character's name starts with a 0 value, we're at the title screen/character creation. + # In that case, don't allow any read/writes. + # We do this by setting the guard to 1 because that's neither a valid character nor the initial value. + if self.guard_character == 0: + self.guard_character = 0x01 + + if self.consumable_stack_amounts is None: + self.consumable_stack_amounts = {} + self.consumable_stack_amounts["Shard"] = 1 + other_consumable_amounts = await self.read_rom(ctx, 0x47400, 10) + self.consumable_stack_amounts["Tent"] = other_consumable_amounts[0] + 1 + self.consumable_stack_amounts["Cabin"] = other_consumable_amounts[1] + 1 + self.consumable_stack_amounts["House"] = other_consumable_amounts[2] + 1 + self.consumable_stack_amounts["Heal"] = other_consumable_amounts[3] + 1 + self.consumable_stack_amounts["Pure"] = other_consumable_amounts[4] + 1 + self.consumable_stack_amounts["Soft"] = other_consumable_amounts[5] + 1 + self.consumable_stack_amounts["Ext1"] = other_consumable_amounts[6] + 1 + self.consumable_stack_amounts["Ext2"] = other_consumable_amounts[7] + 1 + self.consumable_stack_amounts["Ext3"] = other_consumable_amounts[8] + 1 + self.consumable_stack_amounts["Ext4"] = other_consumable_amounts[9] + 1 + + await self.location_check(ctx) + await self.received_items_check(ctx) + await self.process_weapons_queue(ctx) + await self.process_armor_queue(ctx) + + except bizhawk.RequestFailedError: + # The connector didn't respond. Exit handler and return to main loop to reconnect + pass + + async def location_check(self, ctx: "BizHawkClientContext"): + locations_data = await self.read_sram_values_guarded(ctx, locations_array_start, locations_array_length) + if locations_data is None: + return + locations_checked = [] + if len(locations_data) > 0xFE and locations_data[0xFE] & 0x02 != 0 and not ctx.finished_game: + await ctx.send_msgs([ + {"cmd": "StatusUpdate", + "status": ClientStatus.CLIENT_GOAL} + ]) + ctx.finished_game = True + for location in ctx.missing_locations: + # index will be - 0x100 or 0x200 + index = location + if location < 0x200: + # Location is a chest + index -= 0x100 + flag = 0x04 + else: + # Location is an NPC + index -= 0x200 + flag = 0x02 + if locations_data[index] & flag != 0: + locations_checked.append(location) + + found_locations = await ctx.check_locations(locations_checked) + for location in found_locations: + ctx.locations_checked.add(location) + location_name = ctx.location_names.lookup_in_game(location) + logger.info( + f'New Check: {location_name} ({len(ctx.locations_checked)}/' + f'{len(ctx.missing_locations) + len(ctx.checked_locations)})') + + + async def received_items_check(self, ctx: "BizHawkClientContext") -> None: + assert self.consumable_stack_amounts, "shouldn't call this function without reading consumable_stack_amounts" + write_list: list[tuple[int, list[int], str]] = [] + items_received_count = await self.read_sram_value_guarded(ctx, items_obtained) + if items_received_count is None: + return + if items_received_count < len(ctx.items_received): + current_item = ctx.items_received[items_received_count] + current_item_id = current_item.item + current_item_name = ctx.item_names.lookup_in_game(current_item_id, ctx.game) + if current_item_name in key_items: + location = current_item_id - 0xE0 + write_list.append((location, [1], self.sram)) + elif current_item_name in movement_items: + location = current_item_id - 0x1E0 + if current_item_name != "Canal": + write_list.append((location, [1], self.sram)) + else: + write_list.append((location, [0], self.sram)) + elif current_item_name in no_overworld_items: + if current_item_name == "Sigil": + location = 0x28 + else: + location = 0x12 + write_list.append((location, [1], self.sram)) + elif current_item_name in gold_items: + gold_amount = int(current_item_name[4:]) + current_gold_value = await self.read_sram_values_guarded(ctx, gp_location_low, 3) + if current_gold_value is None: + return + current_gold = int.from_bytes(current_gold_value, "little") + new_gold = min(gold_amount + current_gold, 999999) + lower_byte = new_gold % (2 ** 8) + middle_byte = (new_gold // (2 ** 8)) % (2 ** 8) + upper_byte = new_gold // (2 ** 16) + write_list.append((gp_location_low, [lower_byte], self.sram)) + write_list.append((gp_location_middle, [middle_byte], self.sram)) + write_list.append((gp_location_high, [upper_byte], self.sram)) + elif current_item_name in consumables: + location = current_item_id - 0xE0 + current_value = await self.read_sram_value_guarded(ctx, location) + if current_value is None: + return + amount_to_add = self.consumable_stack_amounts[current_item_name] + new_value = min(current_value + amount_to_add, 99) + write_list.append((location, [new_value], self.sram)) + elif current_item_name in extended_consumables: + ext_name = ext_consumables_lookup[current_item_name] + location = ext_consumables_locations[ext_name] + current_value = await self.read_sram_value_guarded(ctx, location) + if current_value is None: + return + amount_to_add = self.consumable_stack_amounts[ext_name] + new_value = min(current_value + amount_to_add, 99) + write_list.append((location, [new_value], self.sram)) + elif current_item_name in weapons: + self.weapons_queue.appendleft(current_item_id - 0x11B) + elif current_item_name in armor: + self.armor_queue.appendleft(current_item_id - 0x143) + write_list.append((items_obtained, [items_received_count + 1], self.sram)) + write_successful = await self.write_sram_values_guarded(ctx, write_list) + if write_successful: + await bizhawk.display_message(ctx.bizhawk_ctx, f"Received {current_item_name}") + + async def process_weapons_queue(self, ctx: "BizHawkClientContext"): + empty_slots = deque() + char1_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[0], 4) + char2_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[1], 4) + char3_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[2], 4) + char4_slots = await self.read_sram_values_guarded(ctx, weapons_arrays_starts[3], 4) + if char1_slots is None or char2_slots is None or char3_slots is None or char4_slots is None: + return + for i, slot in enumerate(char1_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[0] + i) + for i, slot in enumerate(char2_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[1] + i) + for i, slot in enumerate(char3_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[2] + i) + for i, slot in enumerate(char4_slots): + if slot == 0: + empty_slots.appendleft(weapons_arrays_starts[3] + i) + while len(empty_slots) > 0 and len(self.weapons_queue) > 0: + current_slot = empty_slots.pop() + current_weapon = self.weapons_queue.pop() + await self.write_sram_guarded(ctx, current_slot, current_weapon) + + async def process_armor_queue(self, ctx: "BizHawkClientContext"): + empty_slots = deque() + char1_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[0], 4) + char2_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[1], 4) + char3_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[2], 4) + char4_slots = await self.read_sram_values_guarded(ctx, armors_arrays_starts[3], 4) + if char1_slots is None or char2_slots is None or char3_slots is None or char4_slots is None: + return + for i, slot in enumerate(char1_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[0] + i) + for i, slot in enumerate(char2_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[1] + i) + for i, slot in enumerate(char3_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[2] + i) + for i, slot in enumerate(char4_slots): + if slot == 0: + empty_slots.appendleft(armors_arrays_starts[3] + i) + while len(empty_slots) > 0 and len(self.armor_queue) > 0: + current_slot = empty_slots.pop() + current_armor = self.armor_queue.pop() + await self.write_sram_guarded(ctx, current_slot, current_armor) + + + async def read_sram_value(self, ctx: "BizHawkClientContext", location: int): + value = ((await bizhawk.read(ctx.bizhawk_ctx, [(location, 1, self.sram)]))[0]) + return int.from_bytes(value, "little") + + async def read_sram_values_guarded(self, ctx: "BizHawkClientContext", location: int, size: int): + value = await bizhawk.guarded_read(ctx.bizhawk_ctx, + [(location, size, self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + if value is None: + return None + return value[0] + + async def read_sram_value_guarded(self, ctx: "BizHawkClientContext", location: int): + value = await bizhawk.guarded_read(ctx.bizhawk_ctx, + [(location, 1, self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + if value is None: + return None + return int.from_bytes(value[0], "little") + + async def read_rom(self, ctx: "BizHawkClientContext", location: int, size: int): + return (await bizhawk.read(ctx.bizhawk_ctx, [(location, size, self.rom)]))[0] + + async def write_sram_guarded(self, ctx: "BizHawkClientContext", location: int, value: int): + return await bizhawk.guarded_write(ctx.bizhawk_ctx, + [(location, [value], self.sram)], + [(status_a_location, [self.guard_character], self.sram)]) + + async def write_sram_values_guarded(self, ctx: "BizHawkClientContext", write_list): + return await bizhawk.guarded_write(ctx.bizhawk_ctx, + write_list, + [(status_a_location, [self.guard_character], self.sram)]) diff --git a/worlds/ff1/Items.py b/worlds/ff1/Items.py index 469cf6f05193..5d674a17b386 100644 --- a/worlds/ff1/Items.py +++ b/worlds/ff1/Items.py @@ -1,5 +1,5 @@ import json -from pathlib import Path +import pkgutil from typing import Dict, Set, NamedTuple, List from BaseClasses import Item, ItemClassification @@ -37,15 +37,13 @@ class FF1Items: _item_table_lookup: Dict[str, ItemData] = {} def _populate_item_table_from_data(self): - base_path = Path(__file__).parent - file_path = (base_path / "data/items.json").resolve() - with open(file_path) as file: - items = json.load(file) - # Hardcode progression and categories for now - self._item_table = [ItemData(name, code, "FF1Item", ItemClassification.progression if name in - FF1_PROGRESSION_LIST else ItemClassification.useful if name in FF1_USEFUL_LIST else - ItemClassification.filler) for name, code in items.items()] - self._item_table_lookup = {item.name: item for item in self._item_table} + file = pkgutil.get_data(__name__, "data/items.json").decode("utf-8") + items = json.loads(file) + # Hardcode progression and categories for now + self._item_table = [ItemData(name, code, "FF1Item", ItemClassification.progression if name in + FF1_PROGRESSION_LIST else ItemClassification.useful if name in FF1_USEFUL_LIST else + ItemClassification.filler) for name, code in items.items()] + self._item_table_lookup = {item.name: item for item in self._item_table} def _get_item_table(self) -> List[ItemData]: if not self._item_table or not self._item_table_lookup: diff --git a/worlds/ff1/Locations.py b/worlds/ff1/Locations.py index b0353f94fbdb..47facad985e5 100644 --- a/worlds/ff1/Locations.py +++ b/worlds/ff1/Locations.py @@ -1,5 +1,5 @@ import json -from pathlib import Path +import pkgutil from typing import Dict, NamedTuple, List, Optional from BaseClasses import Region, Location, MultiWorld @@ -18,13 +18,11 @@ class FF1Locations: _location_table_lookup: Dict[str, LocationData] = {} def _populate_item_table_from_data(self): - base_path = Path(__file__).parent - file_path = (base_path / "data/locations.json").resolve() - with open(file_path) as file: - locations = json.load(file) - # Hardcode progression and categories for now - self._location_table = [LocationData(name, code) for name, code in locations.items()] - self._location_table_lookup = {item.name: item for item in self._location_table} + file = pkgutil.get_data(__name__, "data/locations.json") + locations = json.loads(file) + # Hardcode progression and categories for now + self._location_table = [LocationData(name, code) for name, code in locations.items()] + self._location_table_lookup = {item.name: item for item in self._location_table} def _get_location_table(self) -> List[LocationData]: if not self._location_table or not self._location_table_lookup: diff --git a/worlds/ff1/__init__.py b/worlds/ff1/__init__.py index 3a5047506850..39df9020e529 100644 --- a/worlds/ff1/__init__.py +++ b/worlds/ff1/__init__.py @@ -7,6 +7,7 @@ from .Locations import EventId, FF1Locations, generate_rule, CHAOS_TERMINATED_EVENT from .Options import FF1Options from ..AutoWorld import World, WebWorld +from .Client import FF1Client class FF1Settings(settings.Group): diff --git a/worlds/ff1/docs/en_Final Fantasy.md b/worlds/ff1/docs/en_Final Fantasy.md index 889bb46e0c35..a05aef63bc8c 100644 --- a/worlds/ff1/docs/en_Final Fantasy.md +++ b/worlds/ff1/docs/en_Final Fantasy.md @@ -22,11 +22,6 @@ All items can appear in other players worlds, including consumables, shards, wea ## What does another world's item look like in Final Fantasy -All local and remote items appear the same. Final Fantasy will say that you received an item, then BOTH the client log and the -emulator will display what was found external to the in-game text box. +All local and remote items appear the same. Final Fantasy will say that you received an item, then the client log will +display what was found external to the in-game text box. -## Unique Local Commands -The following commands are only available when using the FF1Client for the Final Fantasy Randomizer. - -- `/nes` Shows the current status of the NES connection. -- `/toggle_msgs` Toggle displaying messages in EmuHawk diff --git a/worlds/ff1/docs/multiworld_en.md b/worlds/ff1/docs/multiworld_en.md index d3dc457f01be..1f1147bb31b5 100644 --- a/worlds/ff1/docs/multiworld_en.md +++ b/worlds/ff1/docs/multiworld_en.md @@ -2,10 +2,10 @@ ## Required Software -- The FF1Client - - Bundled with Archipelago: [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) -- The BizHawk emulator. Versions 2.3.1 and higher are supported. Version 2.7 is recommended - - [BizHawk at TASVideos](https://tasvideos.org/BizHawk) +- BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) + - Detailed installation instructions for BizHawk can be found at the above link. + - Windows users must run the prerequisite installer first, which can also be found at the above link. +- The built-in BizHawk client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases) - Your legally obtained Final Fantasy (USA Edition) ROM file, probably named `Final Fantasy (USA).nes`. Neither Archipelago.gg nor the Final Fantasy Randomizer Community can supply you with this. @@ -13,7 +13,7 @@ 1. Download and install the latest version of Archipelago. 1. On Windows, download Setup.Archipelago..exe and run it -2. Assign EmuHawk version 2.3.1 or higher as your default program for launching `.nes` files. +2. Assign EmuHawk as your default program for launching `.nes` files. 1. Extract your BizHawk folder to your Desktop, or somewhere you will remember. Below are optional additional steps for loading ROMs more conveniently 1. Right-click on a ROM file and select **Open with...** @@ -46,7 +46,7 @@ please refer to the [game agnostic setup guide](/tutorial/Archipelago/setup/en). Once the Archipelago server has been hosted: -1. Navigate to your Archipelago install folder and run `ArchipelagoFF1Client.exe` +1. Navigate to your Archipelago install folder and run `ArchipelagoBizhawkClient.exe` 2. Notice the `/connect command` on the server hosting page (It should look like `/connect archipelago.gg:*****` where ***** are numbers) 3. Type the connect command into the client OR add the port to the pre-populated address on the top bar (it should @@ -54,16 +54,11 @@ Once the Archipelago server has been hosted: ### Running Your Game and Connecting to the Client Program -1. Open EmuHawk 2.3.1 or higher and load your ROM OR click your ROM file if it is already associated with the +1. Open EmuHawk and load your ROM OR click your ROM file if it is already associated with the extension `*.nes` -2. Navigate to where you installed Archipelago, then to `data/lua`, and drag+drop the `connector_ff1.lua` script onto - the main EmuHawk window. - 1. You could instead open the Lua Console manually, click `Script` 〉 `Open Script`, and navigate to - `connector_ff1.lua` with the file picker. - 2. If it gives a `NLua.Exceptions.LuaScriptException: .\socket.lua:13: module 'socket.core' not found:` exception - close your emulator entirely, restart it and re-run these steps - 3. If it says `Must use a version of BizHawk 2.3.1 or higher`, double-check your BizHawk version by clicking ** - Help** -> **About** +2. Navigate to where you installed Archipelago, then to `data/lua`, and drag+drop the `connector_bizhawk_generic.lua` +script onto the main EmuHawk window. You can also instead open the Lua Console manually, click `Script` 〉 `Open Script`, +and navigate to `connector_bizhawk_generic.lua` with the file picker. ## Play the game diff --git a/worlds/generic/docs/advanced_settings_en.md b/worlds/generic/docs/advanced_settings_en.md index 6f0520febc6e..db93981bc9c8 100644 --- a/worlds/generic/docs/advanced_settings_en.md +++ b/worlds/generic/docs/advanced_settings_en.md @@ -288,7 +288,7 @@ world and the beginning of another world. You can also combine multiple files by ### Example ```yaml -description: Example of generating multiple worlds. World 1 of 3 +description: Example of generating multiple worlds. World 1 of 2 name: Mario game: Super Mario 64 requires: @@ -310,31 +310,6 @@ Super Mario 64: --- -description: Example of generating multiple worlds. World 2 of 3 -name: Minecraft -game: Minecraft -Minecraft: - progression_balancing: 50 - accessibility: items - advancement_goal: 40 - combat_difficulty: hard - include_hard_advancements: false - include_unreasonable_advancements: false - include_postgame_advancements: false - shuffle_structures: true - structure_compasses: true - send_defeated_mobs: true - bee_traps: 15 - egg_shards_required: 7 - egg_shards_available: 10 - required_bosses: - none: 0 - ender_dragon: 1 - wither: 0 - both: 0 - ---- - description: Example of generating multiple worlds. World 2 of 2 name: ExampleFinder game: ChecksFinder @@ -344,6 +319,6 @@ ChecksFinder: accessibility: items ``` -The above example will generate 3 worlds - one Super Mario 64, one Minecraft, and one ChecksFinder. +The above example will generate 2 worlds - one Super Mario 64 and one ChecksFinder. diff --git a/worlds/generic/docs/mac_en.md b/worlds/generic/docs/mac_en.md index 76b1ee4a3827..38fd3cd9404a 100644 --- a/worlds/generic/docs/mac_en.md +++ b/worlds/generic/docs/mac_en.md @@ -20,9 +20,11 @@ It is generally recommended that you use a virtual environment to run python bas 3. Run the command `source venv/bin/activate` to activate the virtual environment. 4. If you want to exit the virtual environment, run the command `deactivate`. ## Steps to Run the Clients -1. If your game doesn't have a patch file, run the command `python3 SNIClient.py`, changing the filename with the file of the client you want to run. -2. If your game does have a patch file, move the base rom to the Archipelago directory and run the command `python3 SNIClient.py 'patchfile'` with the filename extension for the patch file (apsm, aplttp, apsmz3, etc.) included and changing the filename with the file of the client you want to run. -3. Your client should now be running and rom created (where applicable). +1. Run the command `python3 Launcher.py`. +2. If your game doesn't have a patch file, just click the desired client in the right side column. +3. If your game does have a patch file, click the 'Open Patch' button and navigate to your patch file (the filename extension will look something like apsm, aplttp, apsmz3, etc.). +4. If the patching process needs a rom, but cannot find it, it will ask you to navigate to your legally obtained rom. +5. Your client should now be running and rom created (where applicable). ## Additional Steps for SNES Games 1. If using RetroArch, the instructions to set up your emulator [here in the Link to the Past setup guide](https://archipelago.gg/tutorial/A%20Link%20to%20the%20Past/multiworld/en) also work on the macOS version of RetroArch. 2. Double click on the SNI tar.gz download to extract the files to an SNI directory. If it isn't already, rename this directory to SNI to make some steps easier. diff --git a/worlds/generic/docs/plando_en.md b/worlds/generic/docs/plando_en.md index 946962476286..69f59c739eda 100644 --- a/worlds/generic/docs/plando_en.md +++ b/worlds/generic/docs/plando_en.md @@ -27,73 +27,176 @@ requires: plando: bosses, items, texts, connections ``` +For a basic understanding of YAML files, refer to +[YAML Formatting](/tutorial/Archipelago/advanced_settings/en#yaml-formatting) +in Advanced Settings. + ## Item Plando -Item plando allows a player to place an item in a specific location or specific locations, or place multiple items into a -list of specific locations both in their own game or in another player's game. - -* The options for item plando are `from_pool`, `world`, `percentage`, `force`, `count`, and either `item` and - `location`, or `items` and `locations`. - * `from_pool` determines if the item should be taken *from* the item pool or *added* to it. This can be true or - false and defaults to true if omitted. - * `world` is the target world to place the item in. - * It gets ignored if only one world is generated. - * Can be a number, name, true, false, null, or a list. False is the default. - * If a number is used, it targets that slot or player number in the multiworld. - * If a name is used, it will target the world with that player name. - * If set to true, it will be any player's world besides your own. - * If set to false, it will target your own world. - * If set to null, it will target a random world in the multiworld. - * If a list of names is used, it will target the games with the player names specified. - * `force` determines whether the generator will fail if the item can't be placed in the location. Can be true, false, - or silent. Silent is the default. - * If set to true, the item must be placed and the generator will throw an error if it is unable to do so. - * If set to false, the generator will log a warning if the placement can't be done but will still generate. - * If set to silent and the placement fails, it will be ignored entirely. - * `percentage` is the percentage chance for the relevant block to trigger. This can be any value from 0 to 100 and - if omitted will default to 100. - * Single Placement is when you use a plando block to place a single item at a single location. - * `item` is the item you would like to place and `location` is the location to place it. - * Multi Placement uses a plando block to place multiple items in multiple locations until either list is exhausted. - * `items` defines the items to use, each with a number for the amount. Using `true` instead of a number uses however many of that item are in your item pool. - * `locations` is a list of possible locations those items can be placed in. - * Some special location group names can be specified: - * `early_locations` will add all sphere 1 locations (locations logically reachable only with your starting inventory) - * `non_early_locations` will add all locations beyond sphere 1 (locations that require finding at least one item before they become logically reachable) - * Using the multi placement method, placements are picked randomly. - - * `count` can be used to set the maximum number of items placed from the block. The default is 1 if using `item` and False if using `items` - * If a number is used, it will try to place this number of items. - * If set to false, it will try to place as many items from the block as it can. - * If `min` and `max` are defined, it will try to place a number of items between these two numbers at random. +Item Plando allows a player to place an item in a specific location or locations, or place multiple items into a list +of specific locations in their own game and/or in another player's game. + +To add item plando to your player yaml, you add them under the `plando_items` block. You should start with `item` if you +want to do Single Placement, or `items` if you want to do Multi Placement. A list of items can still be defined under +`item` but only one of them will be chosen at random to be used. + +After you define `item/items`, you would define `location` or `locations`, depending on if you want to fill one +location or many. Note that both `location` and `locations` are optional. A list of locations can still be defined under +`location` but only one of them will be chosen at random to be used. + +You may do any combination of `item/items` and `location/locations` in a plando block, but the block only places items +in locations **until the shorter of the two lists is used up.** + +Once you are satisfied with your first block, you may continue to define ones under the same `plando_items` parent. +Each block can have several different options to tailor it the way you like. + +* The `items` section defines the items to use. Each item name can be followed by a colon and a value. + * A numerical value indicates the amount of that item. + * A `true` value uses all copies of that item that are in your item pool. + +* The `item` section defines a list of items to use, from which one will be chosen at random. Each item name can be + followed by a colon and a value. The value indicates the weight of that item being chosen. + +* The `locations` section defines possible locations those items can be placed in. Two special location groups exist: + * `early_locations` will add all sphere 1 locations (locations logically reachable only with your starting + inventory). + * `non_early_locations` will add all locations beyond sphere 1 (locations that require finding at least one item + before they become logically reachable). + +* `from_pool` determines if the item should be taken *from* the item pool or *created* from scratch. + * `false`: Create a new item with the same name (the world will determine its properties e.g. classification). + * `true`: Take the existing item, if it exists, from the item pool. If it does not exist, one will be created from + scratch. **(Default)** + +* `world` is the target world to place the item in. It gets ignored if only one world is generated. + * **A number:** Use this slot or player number in the multiworld. + * **A name:** Use the world with that player name. + * **A list of names:** Use the worlds with the player names specified. + * `true`: Locations will be in any player's world besides your own. + * `false`: Locations will be in your own world. **(Default)** + * `null`: Locations will be in a random world in the multiworld. + +* `force` determines whether the generator will fail if the plando block cannot be fulfilled. + * `true`: The generator will throw an error if it is unable to place an item. + * `false`: The generator will log a warning if it is unable to place an item, but it will still generate. + * `silent`: If the placement fails, it will be ignored entirely. **(Default)** + +* `percentage` is the percentage chance for the block to trigger. This can be any integer from 0 to 100. + **(Default: 100)** + +* `count` sets the number of items placed from the list. + * **Default: 1 if using `item` or `location`, and `false` otherwise.** + * **A number:** It will place this number of items. + * `false`: It will place as many items from the list as it can. + * **If `min` is defined,** it will place at least `min` many items (can be combined with `max`). + * **If `max` is defined,** it will place at most `max` many items (can be combined with `min`). ### Available Items and Locations -A list of all available items and locations can be found in the [website's datapackage](/datapackage). The items and locations will be in the `"item_name_to_id"` and `"location_name_to_id"` sections of the relevant game. You do not need the quotes but the name must be entered in the same as it appears on that page and is case-sensitive. +A list of all available items and locations can be found in the [website's datapackage](/datapackage). The items and +locations will be in the `"item_name_to_id"` and `"location_name_to_id"` sections of the relevant game. Names are +case-sensitive. You can also use item groups and location groups that are defined in the datapackage. -### Examples +## Item Plando Examples +```yaml + plando_items: + # Example block - Pokémon Red and Blue + - items: + Potion: 3 + locations: + - "Route 1 - Free Sample Man" + - "Mt Moon 1F - West Item" + - "Mt Moon 1F - South Item" +``` +This block will lock 3 Potion items on the Route 1 Pokémart employee and 2 Mt Moon items. Note these are all +Potions in the vanilla game. The world value has not been specified, so these locations must be in this player's own +world by default. ```yaml plando_items: - # example block 1 - Timespinner + # Example block - A Link to the Past + - items: + Progressive Sword: 4 + world: + - BobsWitness + - BobsRogueLegacy + count: + min: 1 + max: 4 +``` +This block will attempt to place a random number, between 1 and 4, of Progressive Swords into any locations within the +game slots named "BobsWitness" and "BobsRogueLegacy." + +```yaml + plando_items: + # Example block - Secret of Evermore + - items: + Levitate: 1 + Revealer: 1 + Energize: 1 + locations: + - Master Sword Pedestal + - Desert Discard + world: true + count: 2 +``` +This block will choose 2 from the Levitate, Revealer, and Energize items at random and attempt to put them into the +locations named "Master Sword Pedestal" and "Desert Discard". Because the world value is `true`, these locations +must be in other players' worlds. + +```yaml + plando_items: + # Example block - Timespinner - item: Empire Orb: 1 - Radiant Orb: 1 + Radiant Orb: 3 location: Starter Chest 1 - from_pool: true + from_pool: false world: true percentage: 50 - - # example block 2 - Ocarina of Time +``` +This block will place a single item, either the Empire Orb or Radiant Orb, on the location "Starter Chest 1". There is +a 25% chance it is Empire Orb, and 75% chance it is Radiant Orb (1 to 3 odds). The world value is `true`, so this +location must be in another player's world. Because the from_pool value is `false`, a copy of these items is added to +these locations, while the originals remain in the item pool to be shuffled. Unlike the previous examples, which will +always trigger, this block only has a 50% chance to trigger. + +```yaml + plando_items: + # Example block - Factorio + - items: + progressive-electric-energy-distribution: 2 + electric-energy-accumulators: 1 + progressive-turret: 2 + locations: + - AP-1-001 + - AP-1-002 + - AP-1-003 + - AP-1-004 + percentage: 80 + force: true + from_pool: true + world: false +``` +This block lists 5 items but only 4 locations, so it will place all but 1 of the items randomly among the locations +chosen here. This block has an 80% chance of occurring. Because force is `true`, the Generator will fail if it cannot +place one of the selected items (not including the fifth item). From_pool and World have been set to their default +values here, but they can be omitted and have the same result: items will be removed from the pool, and the locations +are in this player's own world. + +**NOTE:** Factorio's locations are dynamically generated, so the locations listed above may not exist in your game, +they are here for demonstration only. + +```yaml + plando_items: + # Example block - Ocarina of Time - items: - Kokiri Sword: 1 Biggoron Sword: 1 Bow: 1 Magic Meter: 1 Progressive Strength Upgrade: 3 Progressive Hookshot: 2 locations: - - Deku Tree Slingshot Chest - Dodongos Cavern Bomb Bag Chest - Jabu Jabus Belly Boomerang Chest - Bottom of the Well Lens of Truth Chest @@ -102,53 +205,16 @@ A list of all available items and locations can be found in the [website's datap - Water Temple Longshot Chest - Shadow Temple Hover Boots Chest - Spirit Temple Silver Gauntlets Chest - world: false - - # example block 3 - Factorio - - items: - progressive-electric-energy-distribution: 2 - electric-energy-accumulators: 1 - progressive-turret: 2 - locations: - - military - - gun-turret - - logistic-science-pack - - steel-processing - percentage: 80 - force: true - - # example block 4 - Secret of Evermore - - items: - Levitate: 1 - Revealer: 1 - Energize: 1 - locations: - - Master Sword Pedestal - - Boss Relic 1 - world: true - count: 2 - - # example block 5 - A Link to the Past - - items: - Progressive Sword: 4 - world: - - BobsSlaytheSpire - - BobsRogueLegacy - count: - min: 1 - max: 4 + from_pool: false + + - item: Kokiri Sword + location: Deku Tree Slingshot Chest + from_pool: false ``` -1. This block has a 50% chance to occur, and if it does, it will place either the Empire Orb or Radiant Orb on another -player's Starter Chest 1 and removes the chosen item from the item pool. -2. This block will always trigger and will place the player's swords, bow, magic meter, strength upgrades, and hookshots -in their own dungeon major item chests. -3. This block has an 80% chance of occurring, and when it does, it will place all but 1 of the items randomly among the -four locations chosen here. -4. This block will always trigger and will attempt to place a random 2 of Levitate, Revealer and Energize into -other players' Master Sword Pedestals or Boss Relic 1 locations. -5. This block will always trigger and will attempt to place a random number, between 1 and 4, of progressive swords -into any locations within the game slots named BobsSlaytheSpire and BobsRogueLegacy. - +The first block will place the player's Biggoron Sword, Bow, Magic Meter, strength upgrades, and hookshots in the +dungeon major item chests. Because the from_pool value is `false`, a copy of these items is added to these locations, +while the originals remain in the item pool to be shuffled. The second block will place the Kokiri Sword in the Deku +Tree Slingshot Chest, again not from the pool. ## Boss Plando @@ -194,7 +260,7 @@ relevant guide: [A Link to the Past Plando Guide](/tutorial/A%20Link%20to%20the% ## Connection Plando -This is currently only supported by a few games, including A Link to the Past, Minecraft, and Ocarina of Time. As the way that these games interact with their +This is currently only supported by a few games, including A Link to the Past and Ocarina of Time. As the way that these games interact with their connections is different, only the basics are explained here. More specific information for connection plando in A Link to the Past can be found in its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). @@ -207,7 +273,6 @@ its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). [A Link to the Past connections](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/EntranceShuffle.py#L3852) -[Minecraft connections](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/data/regions.json#L18****) ### Examples @@ -223,19 +288,10 @@ its [plando guide](/tutorial/A%20Link%20to%20the%20Past/plando/en#connections). - entrance: Agahnims Tower exit: Old Man Cave Exit (West) direction: exit - - # example block 2 - Minecraft - - entrance: Overworld Structure 1 - exit: Nether Fortress - direction: both - - entrance: Overworld Structure 2 - exit: Village - direction: both + ``` 1. These connections are decoupled, so going into the Lake Hylia Cave Shop will take you to the inside of Cave 45, and when you leave the interior, you will exit to the Cave 45 ledge. Going into the Cave 45 entrance will then take you to the Lake Hylia Cave Shop. Walking into the entrance for the Old Man Cave and Agahnim's Tower entrance will both take you to their locations as normal, but leaving Old Man Cave will exit at Agahnim's Tower. -2. This will force a Nether fortress and a village to be the Overworld structures for your game. Note that for the - Minecraft connection plando to work structure shuffle must be enabled. diff --git a/worlds/hylics2/__init__.py b/worlds/hylics2/__init__.py index 18bcb0edc143..f94d9c225373 100644 --- a/worlds/hylics2/__init__.py +++ b/worlds/hylics2/__init__.py @@ -127,6 +127,10 @@ def pre_fill(self): tv = tvs.pop() self.get_location(tv).place_locked_item(self.create_item(gesture)) + def get_pre_fill_items(self) -> List["Item"]: + if self.options.gesture_shuffle: + return [self.create_item(gesture["name"]) for gesture in Items.gesture_item_table.values()] + return [] def fill_slot_data(self) -> Dict[str, Any]: slot_data: Dict[str, Any] = { diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py new file mode 100644 index 000000000000..9a2cb30293f0 --- /dev/null +++ b/worlds/jakanddaxter/__init__.py @@ -0,0 +1,512 @@ +# Python standard libraries +from collections import defaultdict +from math import ceil +from typing import Any, ClassVar, Callable, Union, cast + +# Archipelago imports +import settings +from worlds.AutoWorld import World, WebWorld +from worlds.LauncherComponents import components, Component, launch_subprocess, Type, icon_paths +from BaseClasses import (Item, + ItemClassification as ItemClass, + Tutorial, + CollectionState) +from Options import OptionGroup + +# Jak imports +from . import options +from .game_id import jak1_id, jak1_name, jak1_max +from .items import (JakAndDaxterItem, + OrbAssoc, + item_table, + cell_item_table, + scout_item_table, + special_item_table, + move_item_table, + orb_item_table, + trap_item_table) +from .levels import level_table, level_table_with_global +from .locations import (JakAndDaxterLocation, + location_table, + cell_location_table, + scout_location_table, + special_location_table, + cache_location_table, + orb_location_table) +from .regions import create_regions +from .rules import (enforce_mp_absolute_limits, + enforce_mp_friendly_limits, + enforce_sp_limits, + set_orb_trade_rule) +from .locs import (cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches, + orb_locations as orbs) +from .regs.region_base import JakAndDaxterRegion + + +def launch_client(): + from . import client + launch_subprocess(client.launch, name="JakAndDaxterClient") + + +components.append(Component("Jak and Daxter Client", + func=launch_client, + component_type=Type.CLIENT, + icon="precursor_orb")) + +icon_paths["precursor_orb"] = f"ap:{__name__}/icons/precursor_orb.png" + + +class JakAndDaxterSettings(settings.Group): + class RootDirectory(settings.UserFolderPath): + """Path to folder containing the ArchipelaGOAL mod executables (gk.exe and goalc.exe). + Ensure this path contains forward slashes (/) only. This setting only applies if + Auto Detect Root Directory is set to false.""" + description = "ArchipelaGOAL Root Directory" + + class AutoDetectRootDirectory(settings.Bool): + """Attempt to find the OpenGOAL installation and the mod executables (gk.exe and goalc.exe) + automatically. If set to true, the ArchipelaGOAL Root Directory setting is ignored.""" + description = "ArchipelaGOAL Auto Detect Root Directory" + + class EnforceFriendlyOptions(settings.Bool): + """Enforce friendly player options in both single and multiplayer seeds. Disabling this allows for + more disruptive and challenging options, but may impact seed generation. Use at your own risk!""" + description = "ArchipelaGOAL Enforce Friendly Options" + + root_directory: RootDirectory = RootDirectory( + "%programfiles%/OpenGOAL-Launcher/features/jak1/mods/JakMods/archipelagoal") + # Don't ever change these type hints again. + auto_detect_root_directory: Union[AutoDetectRootDirectory, bool] = True + enforce_friendly_options: Union[EnforceFriendlyOptions, bool] = True + + +class JakAndDaxterWebWorld(WebWorld): + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to setting up ArchipelaGOAL (Archipelago on OpenGOAL).", + "English", + "setup_en.md", + "setup/en", + ["markustulliuscicero"] + ) + + tutorials = [setup_en] + bug_report_page = "https://github.com/ArchipelaGOAL/Archipelago/issues" + + option_groups = [ + OptionGroup("Orbsanity", [ + options.EnableOrbsanity, + options.GlobalOrbsanityBundleSize, + options.PerLevelOrbsanityBundleSize, + ]), + OptionGroup("Power Cell Counts", [ + options.EnableOrderedCellCounts, + options.FireCanyonCellCount, + options.MountainPassCellCount, + options.LavaTubeCellCount, + ]), + OptionGroup("Orb Trade Counts", [ + options.CitizenOrbTradeAmount, + options.OracleOrbTradeAmount, + ]), + OptionGroup("Traps", [ + options.FillerPowerCellsReplacedWithTraps, + options.FillerOrbBundlesReplacedWithTraps, + options.TrapEffectDuration, + options.TrapWeights, + ]), + ] + + +class JakAndDaxterWorld(World): + """ + Jak and Daxter: The Precursor Legacy is a 2001 action platformer developed by Naughty Dog + for the PlayStation 2. The game follows the eponymous protagonists, a young boy named Jak + and his friend Daxter, who has been transformed into an ottsel. With the help of Samos + the Sage of Green Eco and his daughter Keira, the pair travel north in search of a cure for Daxter, + discovering artifacts created by an ancient race known as the Precursors along the way. When the + rogue sages Gol and Maia Acheron plan to flood the world with Dark Eco, they must stop their evil plan + and save the world. + """ + # ID, name, version + game = jak1_name + required_client_version = (0, 5, 0) + + # Options + settings: ClassVar[JakAndDaxterSettings] + options_dataclass = options.JakAndDaxterOptions + options: options.JakAndDaxterOptions + + # Web world + web = JakAndDaxterWebWorld() + + # Stored as {ID: Name} pairs, these must now be swapped to {Name: ID} pairs. + # Remember, the game ID and various offsets for each item type have already been calculated. + item_name_to_id = {name: k for k, name in item_table.items()} + location_name_to_id = {name: k for k, name in location_table.items()} + item_name_groups = { + "Power Cells": set(cell_item_table.values()), + "Scout Flies": set(scout_item_table.values()), + "Specials": set(special_item_table.values()), + "Moves": set(move_item_table.values()), + "Precursor Orbs": set(orb_item_table.values()), + "Traps": set(trap_item_table.values()), + } + location_name_groups = { + "Power Cells": set(cell_location_table.values()), + "Power Cells - GR": set(cells.locGR_cellTable.values()), + "Power Cells - SV": set(cells.locSV_cellTable.values()), + "Power Cells - FJ": set(cells.locFJ_cellTable.values()), + "Power Cells - SB": set(cells.locSB_cellTable.values()), + "Power Cells - MI": set(cells.locMI_cellTable.values()), + "Power Cells - FC": set(cells.locFC_cellTable.values()), + "Power Cells - RV": set(cells.locRV_cellTable.values()), + "Power Cells - PB": set(cells.locPB_cellTable.values()), + "Power Cells - LPC": set(cells.locLPC_cellTable.values()), + "Power Cells - BS": set(cells.locBS_cellTable.values()), + "Power Cells - MP": set(cells.locMP_cellTable.values()), + "Power Cells - VC": set(cells.locVC_cellTable.values()), + "Power Cells - SC": set(cells.locSC_cellTable.values()), + "Power Cells - SM": set(cells.locSM_cellTable.values()), + "Power Cells - LT": set(cells.locLT_cellTable.values()), + "Power Cells - GMC": set(cells.locGMC_cellTable.values()), + "Scout Flies": set(scout_location_table.values()), + "Scout Flies - GR": set(scouts.locGR_scoutTable.values()), + "Scout Flies - SV": set(scouts.locSV_scoutTable.values()), + "Scout Flies - FJ": set(scouts.locFJ_scoutTable.values()), + "Scout Flies - SB": set(scouts.locSB_scoutTable.values()), + "Scout Flies - MI": set(scouts.locMI_scoutTable.values()), + "Scout Flies - FC": set(scouts.locFC_scoutTable.values()), + "Scout Flies - RV": set(scouts.locRV_scoutTable.values()), + "Scout Flies - PB": set(scouts.locPB_scoutTable.values()), + "Scout Flies - LPC": set(scouts.locLPC_scoutTable.values()), + "Scout Flies - BS": set(scouts.locBS_scoutTable.values()), + "Scout Flies - MP": set(scouts.locMP_scoutTable.values()), + "Scout Flies - VC": set(scouts.locVC_scoutTable.values()), + "Scout Flies - SC": set(scouts.locSC_scoutTable.values()), + "Scout Flies - SM": set(scouts.locSM_scoutTable.values()), + "Scout Flies - LT": set(scouts.locLT_scoutTable.values()), + "Scout Flies - GMC": set(scouts.locGMC_scoutTable.values()), + "Specials": set(special_location_table.values()), + "Orb Caches": set(cache_location_table.values()), + "Precursor Orbs": set(orb_location_table.values()), + "Precursor Orbs - GR": set(orbs.locGR_orbBundleTable.values()), + "Precursor Orbs - SV": set(orbs.locSV_orbBundleTable.values()), + "Precursor Orbs - FJ": set(orbs.locFJ_orbBundleTable.values()), + "Precursor Orbs - SB": set(orbs.locSB_orbBundleTable.values()), + "Precursor Orbs - MI": set(orbs.locMI_orbBundleTable.values()), + "Precursor Orbs - FC": set(orbs.locFC_orbBundleTable.values()), + "Precursor Orbs - RV": set(orbs.locRV_orbBundleTable.values()), + "Precursor Orbs - PB": set(orbs.locPB_orbBundleTable.values()), + "Precursor Orbs - LPC": set(orbs.locLPC_orbBundleTable.values()), + "Precursor Orbs - BS": set(orbs.locBS_orbBundleTable.values()), + "Precursor Orbs - MP": set(orbs.locMP_orbBundleTable.values()), + "Precursor Orbs - VC": set(orbs.locVC_orbBundleTable.values()), + "Precursor Orbs - SC": set(orbs.locSC_orbBundleTable.values()), + "Precursor Orbs - SM": set(orbs.locSM_orbBundleTable.values()), + "Precursor Orbs - LT": set(orbs.locLT_orbBundleTable.values()), + "Precursor Orbs - GMC": set(orbs.locGMC_orbBundleTable.values()), + "Trades": {location_table[cells.to_ap_id(k)] for k in + {11, 12, 31, 32, 33, 96, 97, 98, 99, 13, 14, 34, 35, 100, 101}}, + "'Free 7 Scout Flies' Power Cells": set(cells.loc7SF_cellTable.values()), + } + + # These functions and variables are Options-driven, keep them as instance variables here so that we don't clog up + # the seed generation routines with options checking. So we set these once, and then just use them as needed. + can_trade: Callable[[CollectionState, int, int | None], bool] + total_orbs: int = 2000 + orb_bundle_item_name: str = "" + orb_bundle_size: int = 0 + total_trade_orbs: int = 0 + total_prog_orb_bundles: int = 0 + total_trap_orb_bundles: int = 0 + total_filler_orb_bundles: int = 0 + total_power_cells: int = 101 + total_prog_cells: int = 0 + total_trap_cells: int = 0 + total_filler_cells: int = 0 + power_cell_thresholds: list[int] + power_cell_thresholds_minus_one: list[int] + trap_weights: tuple[list[str], list[int]] + + # Store these dictionaries for speed improvements. + level_to_regions: dict[str, list[JakAndDaxterRegion]] # Contains all levels and regions. + level_to_orb_regions: dict[str, list[JakAndDaxterRegion]] # Contains only regions which contain orbs. + + # Handles various options validation, rules enforcement, and caching of important information. + def generate_early(self) -> None: + + # Initialize the level-region dictionary. + self.level_to_regions = defaultdict(list) + self.level_to_orb_regions = defaultdict(list) + + # Cache the power cell threshold values for quicker reference. + self.power_cell_thresholds = [ + self.options.fire_canyon_cell_count.value, + self.options.mountain_pass_cell_count.value, + self.options.lava_tube_cell_count.value, + 100, # The 100 Power Cell Door. + ] + + # Order the thresholds ascending and set the options values to the new order. + if self.options.enable_ordered_cell_counts: + self.power_cell_thresholds.sort() + self.options.fire_canyon_cell_count.value = self.power_cell_thresholds[0] + self.options.mountain_pass_cell_count.value = self.power_cell_thresholds[1] + self.options.lava_tube_cell_count.value = self.power_cell_thresholds[2] + + # We would have done this earlier, but we needed to sort the power cell thresholds first. Don't worry, we'll + # come back to them. + enforce_friendly_options = self.settings.enforce_friendly_options + if self.multiworld.players == 1: + # For singleplayer games, always enforce/clamp the cell counts to valid values. + enforce_sp_limits(self) + else: + if enforce_friendly_options: + # For multiplayer games, we have a host setting to make options fair/sane for other players. + # If this setting is enabled, enforce/clamp some friendly limitations on our options. + enforce_mp_friendly_limits(self) + else: + # Even if the setting is disabled, some values must be clamped to avoid generation errors. + enforce_mp_absolute_limits(self) + + # That's right, set the collection of thresholds again. Don't just clamp the values without updating this list! + self.power_cell_thresholds = [ + self.options.fire_canyon_cell_count.value, + self.options.mountain_pass_cell_count.value, + self.options.lava_tube_cell_count.value, + 100, # The 100 Power Cell Door. + ] + + # Now that the threshold list is finalized, store this for the remove function. + self.power_cell_thresholds_minus_one = [x - 1 for x in self.power_cell_thresholds] + + # Calculate the number of power cells needed for full region access, the number being replaced by traps, + # and the number of remaining filler. + if self.options.jak_completion_condition == options.CompletionCondition.option_open_100_cell_door: + self.total_prog_cells = 100 + else: + self.total_prog_cells = max(self.power_cell_thresholds[:3]) + non_prog_cells = self.total_power_cells - self.total_prog_cells + self.total_trap_cells = min(self.options.filler_power_cells_replaced_with_traps.value, non_prog_cells) + self.options.filler_power_cells_replaced_with_traps.value = self.total_trap_cells + self.total_filler_cells = non_prog_cells - self.total_trap_cells + + # Cache the orb bundle size and item name for quicker reference. + if self.options.enable_orbsanity == options.EnableOrbsanity.option_per_level: + self.orb_bundle_size = self.options.level_orbsanity_bundle_size.value + self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] + elif self.options.enable_orbsanity == options.EnableOrbsanity.option_global: + self.orb_bundle_size = self.options.global_orbsanity_bundle_size.value + self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] + else: + self.orb_bundle_size = 0 + self.orb_bundle_item_name = "" + + # Calculate the number of orb bundles needed for trades, the number being replaced by traps, + # and the number of remaining filler. If Orbsanity is off, default values of 0 will prevail for all. + if self.orb_bundle_size > 0: + total_orb_bundles = self.total_orbs // self.orb_bundle_size + self.total_prog_orb_bundles = ceil(self.total_trade_orbs / self.orb_bundle_size) + non_prog_orb_bundles = total_orb_bundles - self.total_prog_orb_bundles + self.total_trap_orb_bundles = min(self.options.filler_orb_bundles_replaced_with_traps.value, + non_prog_orb_bundles) + self.options.filler_orb_bundles_replaced_with_traps.value = self.total_trap_orb_bundles + self.total_filler_orb_bundles = non_prog_orb_bundles - self.total_trap_orb_bundles + else: + self.options.filler_orb_bundles_replaced_with_traps.value = 0 + + self.trap_weights = self.options.trap_weights.weights_pair + + # Options drive which trade rules to use, so they need to be setup before we create_regions. + set_orb_trade_rule(self) + + # This will also set Locations, Location access rules, Region access rules, etc. + def create_regions(self) -> None: + create_regions(self) + + # Don't forget to add the created regions to the multiworld! + for level in self.level_to_regions: + self.multiworld.regions.extend(self.level_to_regions[level]) + + # As a lazy measure, let's also fill level_to_orb_regions here. + # This should help speed up orbsanity calculations. + self.level_to_orb_regions[level] = [reg for reg in self.level_to_regions[level] if reg.orb_count > 0] + + # from Utils import visualize_regions + # visualize_regions(self.multiworld.get_region("Menu", self.player), "jakanddaxter.puml") + + def item_data_helper(self, item: int) -> list[tuple[int, ItemClass, OrbAssoc, int]]: + """ + Helper function to reuse some nasty if/else trees. This outputs a list of pairs of item count and class. + For instance, not all 101 power cells need to be marked progression if you only need 72 to beat the game. + So we will have 72 Progression Power Cells, and 29 Filler Power Cells. + """ + data: list[tuple[int, ItemClass, OrbAssoc, int]] = [] + + # Make N Power Cells. We only want AP's Progression Fill routine to handle the amount of cells we need + # to reach the furthest possible region. Even for early completion goals, all areas in the game must be + # reachable or generation will fail. TODO - Option-driven region creation would be an enormous refactor. + if item in range(jak1_id, jak1_id + scouts.fly_offset): + data.append((self.total_prog_cells, ItemClass.progression_skip_balancing, OrbAssoc.IS_POWER_CELL, 0)) + data.append((self.total_filler_cells, ItemClass.filler, OrbAssoc.IS_POWER_CELL, 0)) + + # Make 7 Scout Flies per level. + elif item in range(jak1_id + scouts.fly_offset, jak1_id + specials.special_offset): + data.append((7, ItemClass.progression_skip_balancing, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # Make only 1 of each Special Item. + elif item in range(jak1_id + specials.special_offset, jak1_id + caches.orb_cache_offset): + data.append((1, ItemClass.progression | ItemClass.useful, OrbAssoc.ALWAYS_UNLOCKS_ORBS, 0)) + + # Make only 1 of each Move Item. + elif item in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + data.append((1, ItemClass.progression | ItemClass.useful, OrbAssoc.ALWAYS_UNLOCKS_ORBS, 0)) + + # Make N Precursor Orb bundles. Like Power Cells, only a fraction of these will be marked as Progression + # with the remainder as Filler, but they are still entirely fungible. See collect function for why these + # are OrbAssoc.NEVER_UNLOCKS_ORBS. + elif item in range(jak1_id + orbs.orb_offset, jak1_max - max(trap_item_table)): + data.append((self.total_prog_orb_bundles, ItemClass.progression_skip_balancing, + OrbAssoc.NEVER_UNLOCKS_ORBS, self.orb_bundle_size)) + data.append((self.total_filler_orb_bundles, ItemClass.filler, + OrbAssoc.NEVER_UNLOCKS_ORBS, self.orb_bundle_size)) + + # We will manually create trap items as needed. + elif item in range(jak1_max - max(trap_item_table), jak1_max): + data.append((0, ItemClass.trap, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # We will manually create filler items as needed. + elif item == jak1_max: + data.append((0, ItemClass.filler, OrbAssoc.NEVER_UNLOCKS_ORBS, 0)) + + # If we try to make items with ID's higher than we've defined, something has gone wrong. + else: + raise KeyError(f"Tried to fill item pool with unknown ID {item}.") + + return data + + def create_items(self) -> None: + items_made: int = 0 + for item_name in self.item_name_to_id: + item_id = self.item_name_to_id[item_name] + + # Handle Move Randomizer option. + # If it is OFF, put all moves in your starting inventory instead of the item pool, + # then fill the item pool with a corresponding amount of filler items. + if item_name in self.item_name_groups["Moves"] and not self.options.enable_move_randomizer: + self.multiworld.push_precollected(self.create_item(item_name)) + self.multiworld.itempool.append(self.create_filler()) + items_made += 1 + continue + + # Handle Orbsanity option. + # If it is OFF, don't add any orb bundles to the item pool, period. + # If it is ON, don't add any orb bundles that don't match the chosen option. + if (item_name in self.item_name_groups["Precursor Orbs"] + and (self.options.enable_orbsanity == options.EnableOrbsanity.option_off + or item_name != self.orb_bundle_item_name)): + continue + + # Skip Traps for now. + if item_name in self.item_name_groups["Traps"]: + continue + + # In almost every other scenario, do this. Not all items with the same name will have the same item class. + data = self.item_data_helper(item_id) + for (count, classification, orb_assoc, orb_amount) in data: + self.multiworld.itempool += [JakAndDaxterItem(item_name, classification, item_id, + self.player, orb_assoc, orb_amount) + for _ in range(count)] + items_made += count + + # Handle Traps (for real). + # Manually fill the item pool with a weighted assortment of trap items, equal to the sum of + # total_trap_cells + total_trap_orb_bundles. Only do this if one or more traps have weights > 0. + names, weights = self.trap_weights + if sum(weights): + total_traps = self.total_trap_cells + self.total_trap_orb_bundles + trap_list = self.random.choices(names, weights=weights, k=total_traps) + self.multiworld.itempool += [self.create_item(trap_name) for trap_name in trap_list] + items_made += total_traps + + # Handle Unfilled Locations. + # Add an amount of filler items equal to the number of locations yet to be filled. + # This is the final set of items we will add to the pool. + all_regions = self.multiworld.get_regions(self.player) + total_locations = sum(reg.location_count for reg in cast(list[JakAndDaxterRegion], all_regions)) + total_filler = total_locations - items_made + self.multiworld.itempool += [self.create_filler() for _ in range(total_filler)] + + def create_item(self, name: str) -> Item: + item_id = self.item_name_to_id[name] + + # Use first tuple (will likely be the most important). + _, classification, orb_assoc, orb_amount = self.item_data_helper(item_id)[0] + return JakAndDaxterItem(name, classification, item_id, self.player, orb_assoc, orb_amount) + + def get_filler_item_name(self) -> str: + return "Green Eco Pill" + + def collect(self, state: CollectionState, item: JakAndDaxterItem) -> bool: + change = super().collect(state, item) + if change: + # Orbsanity as an option is no-factor to these conditions. Matching the item name implies Orbsanity is ON, + # so we don't need to check the option. When Orbsanity is OFF, there won't even be any orb bundle items + # to collect. + + # Orb items do not intrinsically unlock anything that contains more Reachable Orbs, so they do not need to + # set the cache to stale. They just change how many orbs you have to trade with. + if item.orb_amount > 0: + state.prog_items[self.player]["Tradeable Orbs"] += self.orb_bundle_size # Give a bundle of Trade Orbs + + # Power Cells DO unlock new regions that contain more Reachable Orbs - the connector levels and new + # hub levels - BUT they only do that when you have a number of them equal to one of the threshold values. + elif (item.orb_assoc == OrbAssoc.ALWAYS_UNLOCKS_ORBS + or (item.orb_assoc == OrbAssoc.IS_POWER_CELL + and state.count("Power Cell", self.player) in self.power_cell_thresholds)): + state.prog_items[self.player]["Reachable Orbs Fresh"] = False + + # However, every other item that does not have an appropriate OrbAssoc that changes the CollectionState + # should NOT set the cache to stale, because they did not make it possible to reach more orb locations + # (level unlocks, region unlocks, etc.). + return change + + def remove(self, state: CollectionState, item: JakAndDaxterItem) -> bool: + change = super().remove(state, item) + if change: + + # Do the same thing we did in collect, except subtract trade orbs instead of add. + if item.orb_amount > 0: + state.prog_items[self.player]["Tradeable Orbs"] -= self.orb_bundle_size # Take a bundle of Trade Orbs + + # Ditto Power Cells, but check thresholds - 1, because we potentially crossed the threshold in the opposite + # direction. E.g. we've removed the 20th power cell, our count is now 19, so we should stale the cache. + elif (item.orb_assoc == OrbAssoc.ALWAYS_UNLOCKS_ORBS + or (item.orb_assoc == OrbAssoc.IS_POWER_CELL + and state.count("Power Cell", self.player) in self.power_cell_thresholds_minus_one)): + state.prog_items[self.player]["Reachable Orbs Fresh"] = False + + return change + + def fill_slot_data(self) -> dict[str, Any]: + options_dict = self.options.as_dict("enable_move_randomizer", + "enable_orbsanity", + "global_orbsanity_bundle_size", + "level_orbsanity_bundle_size", + "fire_canyon_cell_count", + "mountain_pass_cell_count", + "lava_tube_cell_count", + "citizen_orb_trade_amount", + "oracle_orb_trade_amount", + "filler_power_cells_replaced_with_traps", + "filler_orb_bundles_replaced_with_traps", + "trap_effect_duration", + "trap_weights", + "jak_completion_condition", + "require_punch_for_klaww", + ) + return options_dict diff --git a/worlds/jakanddaxter/agents/__init__.py b/worlds/jakanddaxter/agents/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/agents/memory_reader.py b/worlds/jakanddaxter/agents/memory_reader.py new file mode 100644 index 000000000000..01035c4a2e1d --- /dev/null +++ b/worlds/jakanddaxter/agents/memory_reader.py @@ -0,0 +1,489 @@ +import logging +import random +import struct +from typing import ByteString, Callable +import json +import pymem +from pymem import pattern +from pymem.exception import ProcessNotFound, ProcessError, MemoryReadError, WinAPIError +from dataclasses import dataclass + +from ..locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as flies, + special_locations as specials, + orb_cache_locations as caches) + + +logger = logging.getLogger("MemoryReader") + + +# Some helpful constants. +sizeof_uint64 = 8 +sizeof_uint32 = 4 +sizeof_uint8 = 1 +sizeof_float = 4 + + +# ***************************************************************************** +# **** This number must match (-> *ap-info-jak1* version) in ap-struct.gc! **** +# ***************************************************************************** +expected_memory_version = 5 + + +# IMPORTANT: OpenGOAL memory structures are particular about the alignment, in memory, of member elements according to +# their size in bits. The address for an N-bit field must be divisible by N. Use this class to define the memory offsets +# of important values in the struct. It will also do the byte alignment properly for you. +# See https://opengoal.dev/docs/reference/type_system/#arrays +@dataclass +class OffsetFactory: + current_offset: int = 0 + + def define(self, size: int, length: int = 1) -> int: + + # If necessary, align current_offset to the current size first. + bytes_to_alignment = self.current_offset % size + if bytes_to_alignment != 0: + self.current_offset += (size - bytes_to_alignment) + + # Increment current_offset so the next definition can be made. + offset_to_use = self.current_offset + self.current_offset += (size * length) + return offset_to_use + + +# Start defining important memory address offsets here. They must be in the same order, have the same sizes, and have +# the same lengths, as defined in `ap-info-jak1`. +offsets = OffsetFactory() + +# Cell, Buzzer, and Special information. +next_cell_index_offset = offsets.define(sizeof_uint64) +next_buzzer_index_offset = offsets.define(sizeof_uint64) +next_special_index_offset = offsets.define(sizeof_uint64) + +cells_checked_offset = offsets.define(sizeof_uint32, 101) +buzzers_checked_offset = offsets.define(sizeof_uint32, 112) +specials_checked_offset = offsets.define(sizeof_uint32, 32) + +buzzers_received_offset = offsets.define(sizeof_uint8, 16) +specials_received_offset = offsets.define(sizeof_uint8, 32) + +# Deathlink information. +death_count_offset = offsets.define(sizeof_uint32) +death_cause_offset = offsets.define(sizeof_uint8) +deathlink_enabled_offset = offsets.define(sizeof_uint8) + +# Move Rando information. +next_orb_cache_index_offset = offsets.define(sizeof_uint64) +orb_caches_checked_offset = offsets.define(sizeof_uint32, 16) +moves_received_offset = offsets.define(sizeof_uint8, 16) +moverando_enabled_offset = offsets.define(sizeof_uint8) + +# Orbsanity information. +orbsanity_option_offset = offsets.define(sizeof_uint8) +orbsanity_bundle_offset = offsets.define(sizeof_uint32) +collected_bundle_offset = offsets.define(sizeof_uint32, 17) + +# Progression and Completion information. +fire_canyon_unlock_offset = offsets.define(sizeof_float) +mountain_pass_unlock_offset = offsets.define(sizeof_float) +lava_tube_unlock_offset = offsets.define(sizeof_float) +citizen_orb_amount_offset = offsets.define(sizeof_float) +oracle_orb_amount_offset = offsets.define(sizeof_float) +completion_goal_offset = offsets.define(sizeof_uint8) +completed_offset = offsets.define(sizeof_uint8) + +# Text to display in the HUD (32 char max per string). +their_item_name_offset = offsets.define(sizeof_uint8, 32) +their_item_owner_offset = offsets.define(sizeof_uint8, 32) +my_item_name_offset = offsets.define(sizeof_uint8, 32) +my_item_finder_offset = offsets.define(sizeof_uint8, 32) + +# Version of the memory struct, to cut down on mod/apworld version mismatches. +memory_version_offset = offsets.define(sizeof_uint32) + +# Connection status to AP server (not the game!) +server_connection_offset = offsets.define(sizeof_uint8) +slot_name_offset = offsets.define(sizeof_uint8, 16) +slot_seed_offset = offsets.define(sizeof_uint8, 8) + +# Trap information. +trap_duration_offset = offsets.define(sizeof_float) + +# The End. +end_marker_offset = offsets.define(sizeof_uint8, 4) + + +# Can't believe this is easier to do in GOAL than Python but that's how it be sometimes. +def as_float(value: int) -> int: + return int(struct.unpack('f', value.to_bytes(sizeof_float, "little"))[0]) + + +# "Jak" to be replaced by player name in the Client. +def autopsy(cause: int) -> str: + if cause in [1, 2, 3, 4]: + return random.choice(["Jak said goodnight.", + "Jak stepped into the light.", + "Jak gave Daxter his insect collection.", + "Jak did not follow Step 1."]) + if cause == 5: + return "Jak fell into an endless pit." + if cause == 6: + return "Jak drowned in the spicy water." + if cause == 7: + return "Jak tried to tackle a Lurker Shark." + if cause == 8: + return "Jak hit 500 degrees." + if cause == 9: + return "Jak took a bath in a pool of dark eco." + if cause == 10: + return "Jak got bombarded with flaming 30-ton boulders." + if cause == 11: + return "Jak hit 800 degrees." + if cause == 12: + return "Jak ceased to be." + if cause == 13: + return "Jak got eaten by the dark eco plant." + if cause == 14: + return "Jak burned up." + if cause == 15: + return "Jak hit the ground hard." + if cause == 16: + return "Jak crashed the zoomer." + if cause == 17: + return "Jak got Flut Flut hurt." + if cause == 18: + return "Jak poisoned the whole darn catch." + if cause == 19: + return "Jak collided with too many obstacles." + return "Jak died." + + +class JakAndDaxterMemoryReader: + marker: ByteString + goal_address: int | None = None + connected: bool = False + initiated_connect: bool = False + + # The memory reader just needs the game running. + gk_process: pymem.process = None + + location_outbox: list[int] = [] + outbox_index: int = 0 + finished_game: bool = False + + # Deathlink handling + deathlink_enabled: bool = False + send_deathlink: bool = False + cause_of_death: str = "" + death_count: int = 0 + + # Orbsanity handling + orbsanity_enabled: bool = False + orbs_paid: int = 0 + + # Game-related callbacks (inform the AP server of changes to game state) + inform_checked_location: Callable + inform_finished_game: Callable + inform_died: Callable + inform_toggled_deathlink: Callable + inform_traded_orbs: Callable + + # Logging callbacks + # These will write to the provided logger, as well as the Client GUI with color markup. + log_error: Callable # Red + log_warn: Callable # Orange + log_success: Callable # Green + log_info: Callable # White (default) + + def __init__(self, + location_check_callback: Callable, + finish_game_callback: Callable, + send_deathlink_callback: Callable, + toggle_deathlink_callback: Callable, + orb_trade_callback: Callable, + log_error_callback: Callable, + log_warn_callback: Callable, + log_success_callback: Callable, + log_info_callback: Callable, + marker: ByteString = b'UnLiStEdStRaTs_JaK1\x00'): + self.marker = marker + + self.inform_checked_location = location_check_callback + self.inform_finished_game = finish_game_callback + self.inform_died = send_deathlink_callback + self.inform_toggled_deathlink = toggle_deathlink_callback + self.inform_traded_orbs = orb_trade_callback + + self.log_error = log_error_callback + self.log_warn = log_warn_callback + self.log_success = log_success_callback + self.log_info = log_info_callback + + async def main_tick(self): + if self.initiated_connect: + await self.connect() + self.initiated_connect = False + + if self.connected: + try: + self.gk_process.read_bool(self.gk_process.base_address) # Ping to see if it's alive. + except (ProcessError, MemoryReadError, WinAPIError): + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + else: + return + + if self.connected: + + # Save some state variables temporarily. + old_deathlink_enabled = self.deathlink_enabled + + # Read the memory address to check the state of the game. + self.read_memory() + + # Checked Locations in game. Handle the entire outbox every tick until we're up to speed. + if len(self.location_outbox) > self.outbox_index: + self.inform_checked_location(self.location_outbox) + self.save_data() + self.outbox_index += 1 + + if self.finished_game: + self.inform_finished_game() + + if old_deathlink_enabled != self.deathlink_enabled: + self.inform_toggled_deathlink() + logger.debug("Toggled DeathLink " + ("ON" if self.deathlink_enabled else "OFF")) + + if self.send_deathlink: + self.inform_died() + + if self.orbs_paid > 0: + self.inform_traded_orbs(self.orbs_paid) + self.orbs_paid = 0 + + async def connect(self): + try: + self.gk_process = pymem.Pymem("gk.exe") # The GOAL Kernel + logger.debug("Found the gk process: " + str(self.gk_process.process_id)) + except ProcessNotFound: + self.log_error(logger, "Could not find the game process.") + self.connected = False + return + + # If we don't find the marker in the first loaded module, we've failed. + modules = list(self.gk_process.list_modules()) + marker_address = pattern.pattern_scan_module(self.gk_process.process_handle, modules[0], self.marker) + if marker_address: + # At this address is another address that contains the struct we're looking for: the game's state. + # From here we need to add the length in bytes for the marker and 4 bytes of padding, + # and the struct address is 8 bytes long (it's an uint64). + goal_pointer = marker_address + len(self.marker) + 4 + self.goal_address = int.from_bytes(self.gk_process.read_bytes(goal_pointer, sizeof_uint64), + byteorder="little", + signed=False) + logger.debug("Found the archipelago memory address: " + str(self.goal_address)) + await self.verify_memory_version() + else: + self.log_error(logger, "Could not find the Archipelago marker address!") + self.connected = False + + async def verify_memory_version(self): + if self.goal_address is None: + self.log_error(logger, "Could not find the Archipelago memory address!") + self.connected = False + return + + memory_version: int | None = None + try: + memory_version = self.read_goal_address(memory_version_offset, sizeof_uint32) + if memory_version == expected_memory_version: + self.log_success(logger, "The Memory Reader is ready!") + self.connected = True + else: + raise MemoryReadError(memory_version_offset, sizeof_uint32) + except (ProcessError, MemoryReadError, WinAPIError): + if memory_version is None: + msg = (f"Could not find a version number in the OpenGOAL memory structure!\n" + f" Expected Version: {str(expected_memory_version)}\n" + f" Found Version: {str(memory_version)}\n" + f"Please follow these steps:\n" + f" If the game is running, try entering '/memr connect' in the client.\n" + f" You should see 'The Memory Reader is ready!'\n" + f" If that did not work, or the game is not running, run the OpenGOAL Launcher.\n" + f" Click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Try entering '/memr connect' in the client again.") + else: + msg = (f"The OpenGOAL memory structure is incompatible with the current Archipelago client!\n" + f" Expected Version: {str(expected_memory_version)}\n" + f" Found Version: {str(memory_version)}\n" + f"Please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Click Update (if one is available).\n" + f" Click Advanced > Compile. When this is done, click Continue.\n" + f" Click Versions and verify the latest version is marked 'Active'.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.") + self.log_error(logger, msg) + self.connected = False + + async def print_status(self): + proc_id = str(self.gk_process.process_id) if self.gk_process else "None" + last_loc = str(self.location_outbox[self.outbox_index - 1] if self.outbox_index else "None") + msg = (f"Memory Reader Status:\n" + f" Game process ID: {proc_id}\n" + f" Game state memory address: {str(self.goal_address)}\n" + f" Last location checked: {last_loc}") + await self.verify_memory_version() + self.log_info(logger, msg) + + def read_memory(self) -> list[int]: + try: + # Need to grab these first and convert to floats, see below. + citizen_orb_amount = self.read_goal_address(citizen_orb_amount_offset, sizeof_float) + oracle_orb_amount = self.read_goal_address(oracle_orb_amount_offset, sizeof_float) + + next_cell_index = self.read_goal_address(next_cell_index_offset, sizeof_uint64) + for k in range(0, next_cell_index): + next_cell = self.read_goal_address(cells_checked_offset + (k * sizeof_uint32), sizeof_uint32) + cell_ap_id = cells.to_ap_id(next_cell) + if cell_ap_id not in self.location_outbox: + self.location_outbox.append(cell_ap_id) + logger.debug("Checked power cell: " + str(next_cell)) + + # If orbsanity is ON and next_cell is one of the traders or oracles, then run a callback + # to add their amount to the DataStorage value holding our current orb trade total. + if next_cell in {11, 12, 31, 32, 33, 96, 97, 98, 99}: + citizen_orb_amount = as_float(citizen_orb_amount) + self.orbs_paid += citizen_orb_amount + logger.debug(f"Traded {citizen_orb_amount} orbs!") + + if next_cell in {13, 14, 34, 35, 100, 101}: + oracle_orb_amount = as_float(oracle_orb_amount) + self.orbs_paid += oracle_orb_amount + logger.debug(f"Traded {oracle_orb_amount} orbs!") + + next_buzzer_index = self.read_goal_address(next_buzzer_index_offset, sizeof_uint64) + for k in range(0, next_buzzer_index): + next_buzzer = self.read_goal_address(buzzers_checked_offset + (k * sizeof_uint32), sizeof_uint32) + buzzer_ap_id = flies.to_ap_id(next_buzzer) + if buzzer_ap_id not in self.location_outbox: + self.location_outbox.append(buzzer_ap_id) + logger.debug("Checked scout fly: " + str(next_buzzer)) + + next_special_index = self.read_goal_address(next_special_index_offset, sizeof_uint64) + for k in range(0, next_special_index): + next_special = self.read_goal_address(specials_checked_offset + (k * sizeof_uint32), sizeof_uint32) + special_ap_id = specials.to_ap_id(next_special) + if special_ap_id not in self.location_outbox: + self.location_outbox.append(special_ap_id) + logger.debug("Checked special: " + str(next_special)) + + death_count = self.read_goal_address(death_count_offset, sizeof_uint32) + death_cause = self.read_goal_address(death_cause_offset, sizeof_uint8) + if death_count > self.death_count: + self.cause_of_death = autopsy(death_cause) # The way he names his variables? Wack! + self.send_deathlink = True + self.death_count += 1 + + # Listen for any changes to this setting. + deathlink_flag = self.read_goal_address(deathlink_enabled_offset, sizeof_uint8) + self.deathlink_enabled = bool(deathlink_flag) + + next_cache_index = self.read_goal_address(next_orb_cache_index_offset, sizeof_uint64) + for k in range(0, next_cache_index): + next_cache = self.read_goal_address(orb_caches_checked_offset + (k * sizeof_uint32), sizeof_uint32) + cache_ap_id = caches.to_ap_id(next_cache) + if cache_ap_id not in self.location_outbox: + self.location_outbox.append(cache_ap_id) + logger.debug("Checked orb cache: " + str(next_cache)) + + # Listen for any changes to this setting. + # moverando_flag = self.read_goal_address(moverando_enabled_offset, sizeof_uint8) + # self.moverando_enabled = bool(moverando_flag) + + orbsanity_option = self.read_goal_address(orbsanity_option_offset, sizeof_uint8) + bundle_size = self.read_goal_address(orbsanity_bundle_offset, sizeof_uint32) + self.orbsanity_enabled = orbsanity_option > 0 + + # Per Level Orbsanity option. Only need to do this loop if we chose this setting. + if orbsanity_option == 1: + for level in range(0, 16): + collected_bundles = self.read_goal_address(collected_bundle_offset + (level * sizeof_uint32), + sizeof_uint32) + + # Count up from the first bundle, by bundle size, until you reach the latest collected bundle. + # e.g. {25, 50, 75, 100, 125...} + if collected_bundles > 0: + for bundle in range(bundle_size, + bundle_size + collected_bundles, # Range max is non-inclusive. + bundle_size): + + bundle_ap_id = orbs.to_ap_id(orbs.find_address(level, bundle, bundle_size)) + if bundle_ap_id not in self.location_outbox: + self.location_outbox.append(bundle_ap_id) + logger.debug(f"Checked orb bundle: L{level} {bundle}") + + # Global Orbsanity option. Index 16 refers to all orbs found regardless of level. + if orbsanity_option == 2: + collected_bundles = self.read_goal_address(collected_bundle_offset + (16 * sizeof_uint32), + sizeof_uint32) + if collected_bundles > 0: + for bundle in range(bundle_size, + bundle_size + collected_bundles, # Range max is non-inclusive. + bundle_size): + + bundle_ap_id = orbs.to_ap_id(orbs.find_address(16, bundle, bundle_size)) + if bundle_ap_id not in self.location_outbox: + self.location_outbox.append(bundle_ap_id) + logger.debug(f"Checked orb bundle: G {bundle}") + + completed = self.read_goal_address(completed_offset, sizeof_uint8) + if completed > 0 and not self.finished_game: + self.finished_game = True + self.log_success(logger, "Congratulations! You finished the game!") + + except (ProcessError, MemoryReadError, WinAPIError): + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + + return self.location_outbox + + def read_goal_address(self, offset: int, length: int) -> int: + return int.from_bytes( + self.gk_process.read_bytes(self.goal_address + offset, length), + byteorder="little", + signed=False) + + def save_data(self): + with open("jakanddaxter_location_outbox.json", "w+") as f: + dump = { + "outbox_index": self.outbox_index, + "location_outbox": self.location_outbox + } + json.dump(dump, f, indent=4) + + def load_data(self): + try: + with open("jakanddaxter_location_outbox.json", "r") as f: + load = json.load(f) + self.outbox_index = load["outbox_index"] + self.location_outbox = load["location_outbox"] + except FileNotFoundError: + pass diff --git a/worlds/jakanddaxter/agents/repl_client.py b/worlds/jakanddaxter/agents/repl_client.py new file mode 100644 index 000000000000..b207bba281c3 --- /dev/null +++ b/worlds/jakanddaxter/agents/repl_client.py @@ -0,0 +1,527 @@ +import json +import logging +import queue +import time +import struct +import random +from dataclasses import dataclass +from queue import Queue +from typing import Callable + +import pymem +from pymem.exception import ProcessNotFound, ProcessError + +import asyncio +from asyncio import StreamReader, StreamWriter, Lock + +from NetUtils import NetworkItem +from ..game_id import jak1_id, jak1_max +from ..items import item_table, trap_item_table +from ..locs import ( + orb_locations as orbs, + cell_locations as cells, + scout_locations as flies, + special_locations as specials, + orb_cache_locations as caches) + + +logger = logging.getLogger("ReplClient") + + +@dataclass +class JsonMessageData: + my_item_name: str | None = None + my_item_finder: str | None = None + their_item_name: str | None = None + their_item_owner: str | None = None + + +ALLOWED_CHARACTERS = frozenset({ + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", + "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", + "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", + "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", + "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", + "y", "z", " ", "!", ":", ",", ".", "/", "?", "-", + "=", "+", "'", "(", ")", "\"" +}) + + +class JakAndDaxterReplClient: + ip: str + port: int + reader: StreamReader + writer: StreamWriter + lock: Lock + connected: bool = False + initiated_connect: bool = False # Signals when user tells us to try reconnecting. + received_deathlink: bool = False + balanced_orbs: bool = False + + # Variables to handle the title screen and initial game connection. + initial_item_count = -1 # Brand new games have 0 items, so initialize this to -1. + received_initial_items = False + processed_initial_items = False + + # The REPL client needs the REPL/compiler process running, but that process + # also needs the game running. Therefore, the REPL client needs both running. + gk_process: pymem.process = None + goalc_process: pymem.process = None + + item_inbox: dict[int, NetworkItem] = {} + inbox_index = 0 + json_message_queue: Queue[JsonMessageData] = queue.Queue() + + # Logging callbacks + # These will write to the provided logger, as well as the Client GUI with color markup. + log_error: Callable # Red + log_warn: Callable # Orange + log_success: Callable # Green + log_info: Callable # White (default) + + def __init__(self, + log_error_callback: Callable, + log_warn_callback: Callable, + log_success_callback: Callable, + log_info_callback: Callable, + ip: str = "127.0.0.1", + port: int = 8181): + self.ip = ip + self.port = port + self.lock = asyncio.Lock() + self.log_error = log_error_callback + self.log_warn = log_warn_callback + self.log_success = log_success_callback + self.log_info = log_info_callback + + async def main_tick(self): + if self.initiated_connect: + await self.connect() + self.initiated_connect = False + + if self.connected: + try: + self.gk_process.read_bool(self.gk_process.base_address) # Ping to see if it's alive. + except ProcessError: + msg = (f"Error reading game memory! (Did the game crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + try: + self.goalc_process.read_bool(self.goalc_process.base_address) # Ping to see if it's alive. + except ProcessError: + msg = (f"Error sending data to compiler! (Did the compiler crash?)\n" + f"Please close all open windows and reopen the Jak and Daxter Client " + f"from the Archipelago Launcher.\n" + f"If the game and compiler do not restart automatically, please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Play in Debug Mode.\n" + f" Then click Advanced > Open REPL.\n" + f" Then close and reopen the Jak and Daxter Client from the Archipelago Launcher.") + self.log_error(logger, msg) + self.connected = False + else: + return + + # When connecting the game to the AP server on the title screen, we may be processing items from starting + # inventory or items received in an async game. Once we have caught up to the initial count, tell the player + # that we are ready to start. New items may even come in during the title screen, so if we go over the count, + # we should still send the ready signal. + if not self.processed_initial_items: + if self.inbox_index >= self.initial_item_count >= 0: + self.processed_initial_items = True + await self.send_connection_status("ready") + + # Receive Items from AP. Handle 1 item per tick. + if len(self.item_inbox) > self.inbox_index: + await self.receive_item() + await self.save_data() + self.inbox_index += 1 + + if self.received_deathlink: + await self.receive_deathlink() + self.received_deathlink = False + + # Progressively empty the queue during each tick + # if text messages happen to be too slow we could pool dequeuing here, + # but it'd slow down the ItemReceived message during release + if not self.json_message_queue.empty(): + json_txt_data = self.json_message_queue.get_nowait() + await self.write_game_text(json_txt_data) + + # This helper function formats and sends `form` as a command to the REPL. + # ALL commands to the REPL should be sent using this function. + async def send_form(self, form: str, print_ok: bool = True) -> bool: + header = struct.pack(" str: + result = "".join([c if c in ALLOWED_CHARACTERS else "?" for c in text[:32]]).upper() + result = result.replace("'", "\\c12") + return f"\"{result}\"" + + # Like sanitize_game_text, but the settings file will NOT allow any whitespace in the slot_name or slot_seed data. + # And don't replace any chars with "?" for good measure. + @staticmethod + def sanitize_file_text(text: str) -> str: + allowed_chars_no_extras = ALLOWED_CHARACTERS - {" ", "'", "(", ")", "\""} + result = "".join([c if c in allowed_chars_no_extras else "" for c in text[:16]]).upper() + return f"\"{result}\"" + + # Pushes a JsonMessageData object to the json message queue to be processed during the repl main_tick + def queue_game_text(self, my_item_name, my_item_finder, their_item_name, their_item_owner): + self.json_message_queue.put(JsonMessageData(my_item_name, my_item_finder, their_item_name, their_item_owner)) + + # OpenGOAL can handle both its own string datatype and C-like character pointers (charp). + async def write_game_text(self, data: JsonMessageData): + logger.debug(f"Sending info to the in-game messenger!") + body = "" + if data.my_item_name and data.my_item_finder: + body += (f" (append-messages (-> *ap-messenger* 0) \'recv " + f" {self.sanitize_game_text(data.my_item_name)} " + f" {self.sanitize_game_text(data.my_item_finder)})") + if data.their_item_name and data.their_item_owner: + body += (f" (append-messages (-> *ap-messenger* 0) \'sent " + f" {self.sanitize_game_text(data.their_item_name)} " + f" {self.sanitize_game_text(data.their_item_owner)})") + await self.send_form(f"(begin {body} (none))", print_ok=False) + + async def receive_item(self): + ap_id = getattr(self.item_inbox[self.inbox_index], "item") + + # Determine the type of item to receive. + if ap_id in range(jak1_id, jak1_id + flies.fly_offset): + await self.receive_power_cell(ap_id) + elif ap_id in range(jak1_id + flies.fly_offset, jak1_id + specials.special_offset): + await self.receive_scout_fly(ap_id) + elif ap_id in range(jak1_id + specials.special_offset, jak1_id + caches.orb_cache_offset): + await self.receive_special(ap_id) + elif ap_id in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + await self.receive_move(ap_id) + elif ap_id in range(jak1_id + orbs.orb_offset, jak1_max - max(trap_item_table)): + await self.receive_precursor_orb(ap_id) # Ponder the orbs. + elif ap_id in range(jak1_max - max(trap_item_table), jak1_max): + await self.receive_trap(ap_id) + elif ap_id == jak1_max: + await self.receive_green_eco() # Ponder why I chose to do ID's this way. + else: + self.log_error(logger, f"Tried to receive item with unknown AP ID {ap_id}!") + + async def receive_power_cell(self, ap_id: int) -> bool: + cell_id = cells.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type fuel-cell) " + "(the float " + str(cell_id) + "))") + if ok: + logger.debug(f"Received a Power Cell!") + else: + self.log_error(logger, f"Unable to receive a Power Cell!") + return ok + + async def receive_scout_fly(self, ap_id: int) -> bool: + fly_id = flies.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type buzzer) " + "(the float " + str(fly_id) + "))") + if ok: + logger.debug(f"Received a {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive a {item_table[ap_id]}!") + return ok + + async def receive_special(self, ap_id: int) -> bool: + special_id = specials.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-special) " + "(the float " + str(special_id) + "))") + if ok: + logger.debug(f"Received special unlock {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive special unlock {item_table[ap_id]}!") + return ok + + async def receive_move(self, ap_id: int) -> bool: + move_id = caches.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-move) " + "(the float " + str(move_id) + "))") + if ok: + logger.debug(f"Received the ability to {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive the ability to {item_table[ap_id]}!") + return ok + + async def receive_precursor_orb(self, ap_id: int) -> bool: + orb_amount = orbs.to_game_id(ap_id) + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type money) " + "(the float " + str(orb_amount) + "))") + if ok: + logger.debug(f"Received {orb_amount} Precursor orbs!") + else: + self.log_error(logger, f"Unable to receive {orb_amount} Precursor orbs!") + return ok + + async def receive_trap(self, ap_id: int) -> bool: + trap_id = jak1_max - ap_id + ok = await self.send_form("(send-event " + "*target* \'get-archipelago " + "(pickup-type ap-trap) " + "(the float " + str(trap_id) + "))") + if ok: + logger.debug(f"Received a {item_table[ap_id]}!") + else: + self.log_error(logger, f"Unable to receive a {item_table[ap_id]}!") + return ok + + # Green eco pills are our filler item. Use the get-pickup event instead to handle being full health. + async def receive_green_eco(self) -> bool: + ok = await self.send_form("(send-event *target* \'get-pickup (pickup-type eco-pill) (the float 1))") + if ok: + logger.debug(f"Received a green eco pill!") + else: + self.log_error(logger, f"Unable to receive a green eco pill!") + return ok + + async def receive_deathlink(self) -> bool: + + # Because it should at least be funny sometimes. + death_types = ["\'death", + "\'death", + "\'death", + "\'death", + "\'endlessfall", + "\'drown-death", + "\'melt", + "\'dark-eco-pool"] + chosen_death = random.choice(death_types) + + ok = await self.send_form("(ap-deathlink-received! " + chosen_death + ")") + if ok: + logger.debug(f"Received deathlink signal!") + else: + self.log_error(logger, f"Unable to receive deathlink signal!") + return ok + + async def subtract_traded_orbs(self, orb_count: int) -> bool: + + # To protect against momentary server disconnects, + # this should only be done once per client session. + if not self.balanced_orbs: + self.balanced_orbs = True + + ok = await self.send_form(f"(-! (-> *game-info* money) (the float {orb_count}))") + if ok: + logger.debug(f"Subtracting {orb_count} traded orbs!") + else: + self.log_error(logger, f"Unable to subtract {orb_count} traded orbs!") + return ok + + return True + + # OpenGOAL has a limit of 8 parameters per function. We've already hit this limit. So, define a new datatype + # in OpenGOAL that holds all these options, instantiate the type here, and have ap-setup-options! function take + # that instance as input. + async def setup_options(self, + os_option: int, os_bundle: int, + fc_count: int, mp_count: int, + lt_count: int, ct_amount: int, + ot_amount: int, trap_time: int, + goal_id: int, slot_name: str, + slot_seed: str) -> bool: + sanitized_name = self.sanitize_file_text(slot_name) + sanitized_seed = self.sanitize_file_text(slot_seed) + + # I didn't want to have to do this with floats but GOAL's compile-time vs runtime types leave me no choice. + ok = await self.send_form(f"(ap-setup-options! (new 'static 'ap-seed-options " + f":orbsanity-option {os_option} " + f":orbsanity-bundle {os_bundle} " + f":fire-canyon-unlock {fc_count}.0 " + f":mountain-pass-unlock {mp_count}.0 " + f":lava-tube-unlock {lt_count}.0 " + f":citizen-orb-amount {ct_amount}.0 " + f":oracle-orb-amount {ot_amount}.0 " + f":trap-duration {trap_time}.0 " + f":completion-goal {goal_id} " + f":slot-name {sanitized_name} " + f":slot-seed {sanitized_seed} ))") + message = (f"Setting options: \n" + f" orbsanity Option {os_option}, orbsanity Bundle {os_bundle}, \n" + f" FC Cell Count {fc_count}, MP Cell Count {mp_count}, \n" + f" LT Cell Count {lt_count}, Citizen Orb Amt {ct_amount}, \n" + f" Oracle Orb Amt {ot_amount}, Trap Duration {trap_time}, \n" + f" Completion GOAL {goal_id}, Slot Name {sanitized_name}, \n" + f" Slot Seed {sanitized_seed}... ") + if ok: + logger.debug(message + "Success!") + else: + self.log_error(logger, message + "Failed!") + + return ok + + async def send_connection_status(self, status: str) -> bool: + ok = await self.send_form(f"(ap-set-connection-status! (connection-status {status}))") + if ok: + logger.debug(f"Connection Status {status} set!") + else: + self.log_error(logger, f"Connection Status {status} failed to set!") + + return ok + + async def save_data(self): + with open("jakanddaxter_item_inbox.json", "w+") as f: + dump = { + "inbox_index": self.inbox_index, + "item_inbox": [{ + "item": self.item_inbox[k].item, + "location": self.item_inbox[k].location, + "player": self.item_inbox[k].player, + "flags": self.item_inbox[k].flags + } for k in self.item_inbox + ] + } + json.dump(dump, f, indent=4) + + def load_data(self): + try: + with open("jakanddaxter_item_inbox.json", "r") as f: + load = json.load(f) + self.inbox_index = load["inbox_index"] + self.item_inbox = {k: NetworkItem( + item=load["item_inbox"][k]["item"], + location=load["item_inbox"][k]["location"], + player=load["item_inbox"][k]["player"], + flags=load["item_inbox"][k]["flags"] + ) for k in range(0, len(load["item_inbox"])) + } + except FileNotFoundError: + pass diff --git a/worlds/jakanddaxter/client.py b/worlds/jakanddaxter/client.py new file mode 100644 index 000000000000..90e6a42aa7e3 --- /dev/null +++ b/worlds/jakanddaxter/client.py @@ -0,0 +1,630 @@ +# Python standard libraries +import asyncio +import json +import logging +import os +import subprocess +import sys + +from asyncio import Task +from datetime import datetime +from logging import Logger +from typing import Awaitable + +# Misc imports +import colorama +import pymem + +from pymem.exception import ProcessNotFound + +# Archipelago imports +import ModuleUpdate +import Utils + +from CommonClient import ClientCommandProcessor, CommonContext, server_loop, gui_enabled +from NetUtils import ClientStatus + +# Jak imports +from .game_id import jak1_name +from .options import EnableOrbsanity +from .agents.memory_reader import JakAndDaxterMemoryReader +from .agents.repl_client import JakAndDaxterReplClient +from . import JakAndDaxterWorld + + +ModuleUpdate.update() +logger = logging.getLogger("JakClient") +all_tasks: set[Task] = set() + + +def create_task_log_exception(awaitable: Awaitable) -> asyncio.Task: + async def _log_exception(a): + try: + return await a + except Exception as e: + logger.exception(e) + finally: + all_tasks.remove(task) + task = asyncio.create_task(_log_exception(awaitable)) + all_tasks.add(task) + return task + + +class JakAndDaxterClientCommandProcessor(ClientCommandProcessor): + ctx: "JakAndDaxterContext" + + # The command processor is not async so long-running operations like the /repl connect command + # (which takes 10-15 seconds to compile the game) have to be requested with user-initiated flags. + # The flags are checked by the agents every main_tick. + def _cmd_repl(self, *arguments: str): + """Sends a command to the OpenGOAL REPL. Arguments: + - connect : connect the client to the REPL (goalc). + - status : check internal status of the REPL.""" + if arguments: + if arguments[0] == "connect": + self.ctx.on_log_info(logger, "This may take a bit... Wait for the success audio cue before continuing!") + self.ctx.repl.initiated_connect = True + if arguments[0] == "status": + create_task_log_exception(self.ctx.repl.print_status()) + + def _cmd_memr(self, *arguments: str): + """Sends a command to the Memory Reader. Arguments: + - connect : connect the memory reader to the game process (gk). + - status : check the internal status of the Memory Reader.""" + if arguments: + if arguments[0] == "connect": + self.ctx.memr.initiated_connect = True + if arguments[0] == "status": + create_task_log_exception(self.ctx.memr.print_status()) + + +class JakAndDaxterContext(CommonContext): + game = jak1_name + items_handling = 0b111 # Full item handling + command_processor = JakAndDaxterClientCommandProcessor + + # We'll need two agents working in tandem to handle two-way communication with the game. + # The REPL Client will handle the server->game direction by issuing commands directly to the running game. + # But the REPL cannot send information back to us, it only ingests information we send it. + # Luckily OpenGOAL sets up memory addresses to write to, that AutoSplit can read from, for speedrunning. + # We'll piggyback off this system with a Memory Reader, and that will handle the game->server direction. + repl: JakAndDaxterReplClient + memr: JakAndDaxterMemoryReader + + # And two associated tasks, so we have handles on them. + repl_task: asyncio.Task + memr_task: asyncio.Task + + # Storing some information for writing save slot identifiers. + slot_seed: str + + def __init__(self, server_address: str | None, password: str | None) -> None: + self.repl = JakAndDaxterReplClient(self.on_log_error, + self.on_log_warn, + self.on_log_success, + self.on_log_info) + self.memr = JakAndDaxterMemoryReader(self.on_location_check, + self.on_finish_check, + self.on_deathlink_check, + self.on_deathlink_toggle, + self.on_orb_trade, + self.on_log_error, + self.on_log_warn, + self.on_log_success, + self.on_log_info) + # self.repl.load_data() + # self.memr.load_data() + super().__init__(server_address, password) + + def run_gui(self): + from kvui import GameManager + + class JakAndDaxterManager(GameManager): + logging_pairs = [ + ("Client", "Archipelago") + ] + base_title = "Jak and Daxter ArchipelaGOAL Client" + + self.ui = JakAndDaxterManager(self) + self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI") + + async def server_auth(self, password_requested: bool = False): + if password_requested and not self.password: + await super(JakAndDaxterContext, self).server_auth(password_requested) + await self.get_username() + self.tags = set() + await self.send_connect() + + def on_package(self, cmd: str, args: dict): + + if cmd == "RoomInfo": + self.slot_seed = args["seed_name"] + + if cmd == "Connected": + slot_data = args["slot_data"] + orbsanity_option = slot_data["enable_orbsanity"] + if orbsanity_option == EnableOrbsanity.option_per_level: + orbsanity_bundle = slot_data["level_orbsanity_bundle_size"] + elif orbsanity_option == EnableOrbsanity.option_global: + orbsanity_bundle = slot_data["global_orbsanity_bundle_size"] + else: + orbsanity_bundle = 1 + + # Connected packet is unaware of starting inventory or if player is returning to an existing game. + # Set initial_item_count to 0, see below comments for more info. + if not self.repl.received_initial_items and self.repl.initial_item_count < 0: + self.repl.initial_item_count = 0 + + create_task_log_exception( + self.repl.setup_options(orbsanity_option, + orbsanity_bundle, + slot_data["fire_canyon_cell_count"], + slot_data["mountain_pass_cell_count"], + slot_data["lava_tube_cell_count"], + slot_data["citizen_orb_trade_amount"], + slot_data["oracle_orb_trade_amount"], + slot_data["trap_effect_duration"], + slot_data["jak_completion_condition"], + self.auth[:16], # The slot name + self.slot_seed[:8])) + + # Because Orbsanity and the orb traders in the game are intrinsically linked, we need the server + # to track our trades at all times to support async play. "Retrieved" will tell us the orbs we lost, + # while "ReceivedItems" will tell us the orbs we gained. This will give us the correct balance. + if orbsanity_option in [EnableOrbsanity.option_per_level, EnableOrbsanity.option_global]: + async def get_orb_balance(): + await self.send_msgs([{"cmd": "Get", "keys": [f"jakanddaxter_{self.auth}_orbs_paid"]}]) + + create_task_log_exception(get_orb_balance()) + + # Tell the server if Deathlink is enabled or disabled in the in-game options. + # This allows us to "remember" the user's choice. + self.on_deathlink_toggle() + + if cmd == "Retrieved": + if f"jakanddaxter_{self.auth}_orbs_paid" in args["keys"]: + orbs_traded = args["keys"][f"jakanddaxter_{self.auth}_orbs_paid"] + orbs_traded = orbs_traded if orbs_traded is not None else 0 + create_task_log_exception(self.repl.subtract_traded_orbs(orbs_traded)) + + if cmd == "ReceivedItems": + + # If you have a starting inventory or are returning to a game where you have items, a ReceivedItems will be + # in the same network packet as Connected. This guarantees it is the first of any ReceivedItems we process. + # In this case, we should set the initial_item_count to > 0, even if already set to 0 by Connected, as well + # as the received_initial_items flag. Finally, use send_connection_status to tell the player to wait while + # we process the initial items. However, we will skip all this if there was no initial ReceivedItems and + # the REPL indicates it already handled any initial items (0 or otherwise). + if not self.repl.received_initial_items and not self.repl.processed_initial_items: + self.repl.received_initial_items = True + self.repl.initial_item_count = len(args["items"]) + create_task_log_exception(self.repl.send_connection_status("wait")) + + # This enumeration should run on every ReceivedItems packet, + # regardless of it being on initial connection or midway through a game. + for index, item in enumerate(args["items"], start=args["index"]): + logger.debug(f"index: {str(index)}, item: {str(item)}") + self.repl.item_inbox[index] = item + + async def json_to_game_text(self, args: dict): + if "type" in args and args["type"] in {"ItemSend"}: + my_item_name: str | None = None + my_item_finder: str | None = None + their_item_name: str | None = None + their_item_owner: str | None = None + + item = args["item"] + recipient = args["receiving"] + + # Receiving an item from the server. + if self.slot_concerns_self(recipient): + my_item_name = self.item_names.lookup_in_game(item.item) + + # Did we find it, or did someone else? + if self.slot_concerns_self(item.player): + my_item_finder = "MYSELF" + else: + my_item_finder = self.player_names[item.player] + + # Sending an item to the server. + if self.slot_concerns_self(item.player): + their_item_name = self.item_names.lookup_in_slot(item.item, recipient) + + # Does it belong to us, or to someone else? + if self.slot_concerns_self(recipient): + their_item_owner = "MYSELF" + else: + their_item_owner = self.player_names[recipient] + + # Write to game display. + self.repl.queue_game_text(my_item_name, my_item_finder, their_item_name, their_item_owner) + + # Even though N items come in as 1 ReceivedItems packet, there are still N PrintJson packets to process, + # and they all arrive before the ReceivedItems packet does. Defer processing of these packets as + # async tasks to speed up large releases of items. + def on_print_json(self, args: dict) -> None: + create_task_log_exception(self.json_to_game_text(args)) + super(JakAndDaxterContext, self).on_print_json(args) + + # We need to do a little more than just use CommonClient's on_deathlink. + def on_deathlink(self, data: dict): + if self.memr.deathlink_enabled: + self.repl.received_deathlink = True + super().on_deathlink(data) + + # We don't need an ap_inform function because check_locations solves that need. + def on_location_check(self, location_ids: list[int]): + create_task_log_exception(self.check_locations(location_ids)) + + # CommonClient has no finished_game function, so we will have to craft our own. TODO - Update if that changes. + async def ap_inform_finished_game(self): + if not self.finished_game and self.memr.finished_game: + message = [{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}] + await self.send_msgs(message) + self.finished_game = True + + def on_finish_check(self): + create_task_log_exception(self.ap_inform_finished_game()) + + # We need to do a little more than just use CommonClient's send_death. + async def ap_inform_deathlink(self): + if self.memr.deathlink_enabled: + player = self.player_names[self.slot] if self.slot is not None else "Jak" + death_text = self.memr.cause_of_death.replace("Jak", player) + await self.send_death(death_text) + self.on_log_warn(logger, death_text) + + # Reset all flags, but leave the death count alone. + self.memr.send_deathlink = False + self.memr.cause_of_death = "" + + def on_deathlink_check(self): + create_task_log_exception(self.ap_inform_deathlink()) + + # We don't need an ap_inform function because update_death_link solves that need. + def on_deathlink_toggle(self): + create_task_log_exception(self.update_death_link(self.memr.deathlink_enabled)) + + # Orb trades are situations unique to Jak, so we have to craft our own function. + async def ap_inform_orb_trade(self, orbs_changed: int): + if self.memr.orbsanity_enabled: + await self.send_msgs([{"cmd": "Set", + "key": f"jakanddaxter_{self.auth}_orbs_paid", + "default": 0, + "want_reply": False, + "operations": [{"operation": "add", "value": orbs_changed}] + }]) + + def on_orb_trade(self, orbs_changed: int): + create_task_log_exception(self.ap_inform_orb_trade(orbs_changed)) + + def _markup_panels(self, msg: str, c: str = None): + color = self.jsontotextparser.color_codes[c] if c else None + message = f"[color={color}]{msg}[/color]" if c else msg + + self.ui.log_panels["Archipelago"].on_message_markup(message) + self.ui.log_panels["All"].on_message_markup(message) + + def on_log_error(self, lg: Logger, message: str): + lg.error(message) + if self.ui: + self._markup_panels(message, "red") + + def on_log_warn(self, lg: Logger, message: str): + lg.warning(message) + if self.ui: + self._markup_panels(message, "orange") + + def on_log_success(self, lg: Logger, message: str): + lg.info(message) + if self.ui: + self._markup_panels(message, "green") + + def on_log_info(self, lg: Logger, message: str): + lg.info(message) + if self.ui: + self._markup_panels(message) + + async def run_repl_loop(self): + while True: + await self.repl.main_tick() + await asyncio.sleep(0.1) + + async def run_memr_loop(self): + while True: + await self.memr.main_tick() + await asyncio.sleep(0.1) + + +def find_root_directory(ctx: JakAndDaxterContext): + + # The path to this file is platform-dependent. + if Utils.is_windows: + appdata = os.getenv("APPDATA") + settings_path = os.path.normpath(f"{appdata}/OpenGOAL-Launcher/settings.json") + elif Utils.is_linux: + home = os.path.expanduser("~") + settings_path = os.path.normpath(f"{home}/.config/OpenGOAL-Launcher/settings.json") + elif Utils.is_macos: + home = os.path.expanduser("~") + settings_path = os.path.normpath(f"{home}/Library/Application Support/OpenGOAL-Launcher/settings.json") + else: + ctx.on_log_error(logger, f"Unknown operating system: {sys.platform}!") + return + + # Boilerplate messages that all error messages in this function should have. + err_title = "Unable to locate the ArchipelaGOAL install directory" + alt_instructions = (f"Please verify that OpenGOAL and ArchipelaGOAL are installed properly. " + f"If the problem persists, follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Features > Mods > ArchipelaGOAL.\n" + f" Then click Advanced > Open Game Data Folder.\n" + f" Go up one folder, then copy this path.\n" + f" Run the Archipelago Launcher, click Open host.yaml.\n" + f" Set the value of 'jakanddaxter_options > root_directory' to this path.\n" + f" Replace all backslashes in the path with forward slashes.\n" + f" Set the value of 'jakanddaxter_options > auto_detect_root_directory' to false, " + f"then save and close the host.yaml file.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.") + + if not os.path.exists(settings_path): + msg = (f"{err_title}: The OpenGOAL settings file does not exist.\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + with open(settings_path, "r") as f: + load = json.load(f) + + # This settings file has changed format once before, and may do so again in the future. + # Guard against future incompatibilities by checking the file version first, and use that to determine + # what JSON keys to look for next. + try: + settings_version = load["version"] + logger.debug(f"OpenGOAL settings file version: {settings_version}") + except KeyError: + msg = (f"{err_title}: The OpenGOAL settings file has no version number!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + try: + if settings_version == "2.0": + jak1_installed = load["games"]["Jak 1"]["isInstalled"] + mod_sources = load["games"]["Jak 1"]["modsInstalledVersion"] + + elif settings_version == "3.0": + jak1_installed = load["games"]["jak1"]["isInstalled"] + mod_sources = load["games"]["jak1"]["mods"] + + else: + msg = (f"{err_title}: The OpenGOAL settings file has an unknown version number ({settings_version}).\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + except KeyError as e: + msg = (f"{err_title}: The OpenGOAL settings file does not contain key entry {e}!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + if not jak1_installed: + msg = (f"{err_title}: The OpenGOAL Launcher is missing a normal install of Jak 1!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + if mod_sources is None: + msg = (f"{err_title}: No mod sources have been configured in the OpenGOAL Launcher!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + # Mods can come from multiple user-defined sources. + # Make no assumptions about where ArchipelaGOAL comes from, we should find it ourselves. + archipelagoal_source = None + for src in mod_sources: + for mod in mod_sources[src].keys(): + if mod == "archipelagoal": + archipelagoal_source = src + # Using this file, we could verify the right version is installed, but we don't need to. + if archipelagoal_source is None: + msg = (f"{err_title}: The ArchipelaGOAL mod is not installed in the OpenGOAL Launcher!\n" + f"{alt_instructions}") + ctx.on_log_error(logger, msg) + return + + # This is just the base OpenGOAL directory, we need to go deeper. + base_path = load["installationDir"] + mod_relative_path = f"features/jak1/mods/{archipelagoal_source}/archipelagoal" + mod_path = os.path.normpath( + os.path.join( + os.path.normpath(base_path), + os.path.normpath(mod_relative_path))) + + return mod_path + + +async def run_game(ctx: JakAndDaxterContext): + + # These may already be running. If they are not running, try to start them. + # TODO - Support other OS's. 1: Pymem is Windows-only. 2: on Linux, there's no ".exe." + gk_running = False + try: + pymem.Pymem("gk.exe") # The GOAL Kernel + gk_running = True + except ProcessNotFound: + ctx.on_log_warn(logger, "Game not running, attempting to start.") + + goalc_running = False + try: + pymem.Pymem("goalc.exe") # The GOAL Compiler and REPL + goalc_running = True + except ProcessNotFound: + ctx.on_log_warn(logger, "Compiler not running, attempting to start.") + + try: + auto_detect_root_directory = JakAndDaxterWorld.settings.auto_detect_root_directory + if auto_detect_root_directory: + root_path = find_root_directory(ctx) + else: + root_path = JakAndDaxterWorld.settings.root_directory + + # Always trust your instincts... the user may not have entered their root_directory properly. + # We don't have to do this check if the root directory was auto-detected. + if "/" not in root_path: + msg = (f"The ArchipelaGOAL root directory contains no path. (Are you missing forward slashes?)\n" + f"Please check your host.yaml file.\n" + f"Verify the value of 'jakanddaxter_options > root_directory' is a valid existing path, " + f"and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Start by checking the existence of the root directory provided in the host.yaml file (or found automatically). + root_path = os.path.normpath(root_path) + if not os.path.exists(root_path): + msg = (f"The ArchipelaGOAL root directory does not exist, unable to locate the Game and Compiler.\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'. " + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Now double-check the existence of the two executables we need. + gk_path = os.path.join(root_path, "gk.exe") + goalc_path = os.path.join(root_path, "goalc.exe") + if not os.path.exists(gk_path) or not os.path.exists(goalc_path): + msg = (f"The Game and Compiler could not be found in the ArchipelaGOAL root directory.\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'. " + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Now we can FINALLY attempt to start the programs. + if not gk_running: + # Per-mod saves and settings are stored outside the ArchipelaGOAL root folder, so we have to traverse + # a relative path, normalize it, and pass it in as an argument to gk. This folder will be created if + # it does not exist. + config_relative_path = "../_settings/archipelagoal" + config_path = os.path.normpath( + os.path.join( + root_path, + os.path.normpath(config_relative_path))) + + # The game freezes if text is inadvertently selected in the stdout/stderr data streams. Let's pipe those + # streams to a file, and let's not clutter the screen with another console window. + timestamp = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") + log_path = os.path.join(Utils.user_path("logs"), f"JakAndDaxterGame_{timestamp}.txt") + log_path = os.path.normpath(log_path) + with open(log_path, "w") as log_file: + gk_process = subprocess.Popen( + [gk_path, "--game", "jak1", + "--config-path", config_path, + "--", "-v", "-boot", "-fakeiso", "-debug"], + stdout=log_file, + stderr=log_file, + creationflags=subprocess.CREATE_NO_WINDOW) + + if not goalc_running: + # For the OpenGOAL Compiler, the existence of the "data" subfolder indicates you are running it from + # a built package. This subfolder is treated as its proj_path. + proj_path = os.path.join(root_path, "data") + if os.path.exists(proj_path): + + # Look for "iso_data" path to automate away an oft-forgotten manual step of mod updates. + # All relative paths should start from root_path and end with "jak1". + goalc_args = [] + possible_relative_paths = { + "../../../../../active/jak1/data/iso_data/jak1", + "./data/iso_data/jak1", + } + + for iso_relative_path in possible_relative_paths: + iso_path = os.path.normpath( + os.path.join( + root_path, + os.path.normpath(iso_relative_path))) + + if os.path.exists(iso_path): + goalc_args = [goalc_path, "--game", "jak1", "--proj-path", proj_path, "--iso-path", iso_path] + logger.debug(f"iso_data folder found: {iso_path}") + break + else: + logger.debug(f"iso_data folder not found, continuing: {iso_path}") + + if not goalc_args: + msg = (f"The iso_data folder could not be found.\n" + f"Please follow these steps:\n" + f" Run the OpenGOAL Launcher, click Jak and Daxter > Advanced > Open Game Data Folder.\n" + f" Copy the iso_data folder from this location.\n" + f" Click Jak and Daxter > Features > Mods > ArchipelaGOAL > Advanced > " + f"Open Game Data Folder.\n" + f" Paste the iso_data folder in this location.\n" + f" Click Advanced > Compile. When this is done, click Continue.\n" + f" Close all launchers, games, clients, and console windows, then restart Archipelago.\n" + f"(See Setup Guide for more details.)") + ctx.on_log_error(logger, msg) + return + + # The non-existence of the "data" subfolder indicates you are running it from source, as a developer. + # The compiler will traverse upward to find the project path on its own. It will also assume your + # "iso_data" folder is at the root of your repository. Therefore, we don't need any of those arguments. + else: + goalc_args = [goalc_path, "--game", "jak1"] + + # This needs to be a new console. The REPL console cannot share a window with any other process. + goalc_process = subprocess.Popen(goalc_args, creationflags=subprocess.CREATE_NEW_CONSOLE) + + except AttributeError as e: + if " " in e.args[0]: + # YAML keys in Host.yaml ought to contain no spaces, which means this is a much more important error. + ctx.on_log_error(logger, e.args[0]) + else: + ctx.on_log_error(logger, + f"Host.yaml does not contain {e.args[0]}, unable to locate game executables.") + return + except FileNotFoundError as e: + msg = (f"The following path could not be found: {e.filename}\n" + f"Please check your host.yaml file.\n" + f"If the value of 'jakanddaxter_options > auto_detect_root_directory' is true, verify that OpenGOAL " + f"is installed properly.\n" + f"If it is false, check the value of 'jakanddaxter_options > root_directory'." + f"Verify it is a valid existing path, and all backslashes have been replaced with forward slashes.") + ctx.on_log_error(logger, msg) + return + + # Auto connect the repl and memr agents. Sleep 5 because goalc takes just a little bit of time to load, + # and it's not something we can await. + ctx.on_log_info(logger, "This may take a bit... Wait for the game's title sequence before continuing!") + await asyncio.sleep(5) + ctx.repl.initiated_connect = True + ctx.memr.initiated_connect = True + + +async def main(): + Utils.init_logging("JakAndDaxterClient", exception_logger="Client") + + ctx = JakAndDaxterContext(None, None) + ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop") + ctx.repl_task = create_task_log_exception(ctx.run_repl_loop()) + ctx.memr_task = create_task_log_exception(ctx.run_memr_loop()) + + if gui_enabled: + ctx.run_gui() + ctx.run_cli() + + # Find and run the game (gk) and compiler/repl (goalc). + create_task_log_exception(run_game(ctx)) + await ctx.exit_event.wait() + await ctx.shutdown() + + +def launch(): + # use colorama to display colored text highlighting + colorama.just_fix_windows_console() + asyncio.run(main()) + colorama.deinit() diff --git a/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md new file mode 100644 index 000000000000..77fbd514cbe8 --- /dev/null +++ b/worlds/jakanddaxter/docs/en_Jak and Daxter The Precursor Legacy.md @@ -0,0 +1,261 @@ +# Jak And Daxter (ArchipelaGOAL) + +## FAQ +- [Where is the Options page?](#where-is-the-options-page) +- [What does randomization do to this game?](#what-does-randomization-do-to-this-game) +- [What are the Special Checks and how do I check them?](#what-are-the-special-checks-and-how-do-i-check-them) +- [What are the Special Items and what do they unlock?](#what-are-the-special-items-and-what-do-they-unlock) +- [How do I know which Special Items I have?](#how-do-i-know-which-special-items-i-have) +- [What is the goal of the game once randomized?](#what-is-the-goal-of-the-game-once-randomized) +- [What happens when I pick up or receive a Power Cell?](#what-happens-when-i-pick-up-or-receive-a-power-cell) +- [What happens when I pick up or receive a Scout Fly?](#what-happens-when-i-pick-up-or-receive-a-scout-fly) +- [How do I check the 'Free 7 Scout Flies' Power Cell?](#how-do-i-check-the-free-7-scout-flies-power-cell) +- [What does Death Link do?](#what-does-death-link-do) +- [What does Move Randomizer do?](#what-does-move-randomizer-do) +- [What are the movement options in Move Randomizer?](#what-are-the-movement-options-in-move-randomizer) +- [How do I know which moves I have?](#how-do-i-know-which-moves-i-have) +- [What does Orbsanity do?](#what-does-orbsanity-do) +- [What do Traps do?](#what-do-traps-do) +- [What kind of Traps are there?](#what-kind-of-traps-are-there) +- [I got soft-locked and cannot leave, how do I get out of here?](#i-got-soft-locked-and-cannot-leave-how-do-i-get-out-of-here) +- [How do I generate seeds with 1 Orb Orbsanity and other extreme options?](#how-do-i-generate-seeds-with-1-orb-orbsanity-and-other-extreme-options) +- [How do I check my player options in-game?](#how-do-i-check-my-player-options-in-game) +- [How does the HUD work?](#how-does-the-hud-work) +- [I think I found a bug, where should I report it?](#i-think-i-found-a-bug-where-should-i-report-it) + +## Where is the options page + +The [Player Options Page](../player-options) for this game contains all the options you need to configure and export +a config file. + +At this time, there are several caveats and restrictions: +- Power Cells and Scout Flies are **always** randomized. +- **All** the traders in the game become in-logic checks **if and only if** you have enough Orbs to pay all of them at once. + - This is to prevent hard locks, where an item required for progression is locked behind a trade you can't afford because you spent the orbs elsewhere. + - By default, that total is 1530. + +## What does randomization do to this game +The game now contains the following Location checks: +- All 101 Power Cells +- All 112 Scout Flies +- All 14 Orb Caches (collect every orb in the cache and let it close) + +These may contain Items for different games, as well as different Items from within Jak and Daxter. +Additionally, several special checks and corresponding items have been added that are required to complete the game. + +## What are the special checks and how do I check them +| Check Name | How To Check | +|------------------------|------------------------------------------------------------------------------| +| Fisherman's Boat | Complete the fishing minigame in Forbidden Jungle | +| Jungle Elevator | Collect the power cell at the top of the temple in Forbidden Jungle | +| Blue Eco Switch | Collect the power cell on the blue vent switch in Forbidden Jungle | +| Flut Flut | Push the egg off the cliff in Sentinel Beach and talk to the bird lady | +| Warrior's Pontoons | Talk to the Warrior in Rock Village once (you do NOT have to trade with him) | +| Snowy Mountain Gondola | Approach the gondola in Volcanic Crater | +| Yellow Eco Switch | Collect the power cell on the yellow vent switch in Snowy Mountain | +| Snowy Fort Gate | Ride the Flut Flut in Snowy Mountain and press the fort gate switch | +| Freed The Blue Sage | Free the Blue Sage in Gol and Maia's Citadel | +| Freed The Red Sage | Free the Red Sage in Gol and Maia's Citadel | +| Freed The Yellow Sage | Free the Yellow Sage in Gol and Maia's Citadel | +| Freed The Green Sage | Free the Green Sage in Gol and Maia's Citadel | + +## What are the special items and what do they unlock +| Item Name | What it Unlocks | +|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| Fisherman's Boat | Misty Island | +| Jungle Elevator | The blue vent switch inside the temple in Forbidden Jungle | +| Blue Eco Switch | The plant boss inside the temple in Forbidden Jungle
The cannon tower in Sentinel Beach | +| Flut Flut | The upper platforms in Boggy Swamp
The fort gate switch in Snowy Mountain | +| Warrior's Pontoons | Boggy Swamp and Mountain Pass | +| Snowy Mountain Gondola | Snowy Mountain | +| Yellow Eco Switch | The frozen box in Snowy Mountain
The shortcut in Mountain Pass | +| Snowy Fort Gate | The fort in Snowy Mountain | +| Freed The Blue Sage
Freed The Red Sage
Freed The Yellow Sage | The final staircase in Gol and Maia's Citadel | +| Freed The Green Sage | The final elevator in Gol and Maia's Citadel | + +## How do I know which special items I have +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Item Tracker`. +This will show you a list of all the special items in the game, ones not normally tracked as power cells or scout flies. +Gray items indicate you do not possess that item, light blue items indicate you possess that item. + +## What is the goal of the game once randomized +By default, to complete the game you must defeat the Gol and Maia and stop them from opening the Dark Eco silo. In order +to reach them, you will need at least 72 Power Cells to cross the Lava Tube, as well as the four special items for +freeing the Red, Blue, Yellow, and Green Sages. + +Alternatively, you can choose from a handful of other completion conditions like defeating a particular boss, crossing +a particular connector level, or opening the 100 Power Cell door after defeating the final boss. You can also customize +the thresholds for connector levels and orb trades. These options allow you to tailor the expected length and difficulty +of your run as you see fit. + +## What happens when I pick up or receive a power cell +When you pick up a power cell, Jak and Daxter will perform their victory animation. Your power cell count will +NOT change. The pause menu will say "Task Completed" below the picked-up Power Cell. If your power cell was related +to one of the special checks listed above, you will automatically check that location as well - a 2 for 1 deal! +Finally, your text client will inform you what you found and who it belongs to. + +When you receive a power cell, your power cell count will tick up by 1. Gameplay will otherwise continue as normal. +Finally, your text client will inform you where you received the power cell from. + +## What happens when I pick up or receive a scout fly +When you pick up a scout fly, your scout fly count will NOT change. The pause menu will show you the number of +scout flies you picked up per-region, and this number will have ticked up by 1 for the region that scout fly belongs to. +Finally, your text client will inform you what you found and who it belongs to. + +When you receive a scout fly, your total scout fly count will tick up by 1. The pause menu will show you the number of +scout flies you received per-region, and this number will have ticked up by 1 for the region that scout fly belongs to. +Finally, your text client will inform you where you received the scout fly from, and which one it is. + +## How do I check the Free 7 Scout Flies power cell +You will automatically check this power cell when you _receive_ your 7th scout fly, NOT when you _pick up_ your 7th +scout fly. So in short: + +- When you _pick up_ your 7th fly, the normal rules apply. +- When you _receive_ your 7th fly, 2 things will happen in quick succession. + - First, you will receive that scout fly, as normal. + - Second, you will immediately complete the "Free 7 Scout Flies" check, which will send out another item. + +## What does Death Link do +If you enable Death Link, all the other players in your Multiworld who also have it enabled will be linked by death. +That means when Jak dies in your game, the players in with Death Link also die. Likewise, if any of the other +players with Death Link die, Jak will also die in a random, possibly spectacular fashion. + +You can turn off Death Link at any time in the game by opening the game's menu and navigating to `Options`, +then `Archipelago Options`, then `Deathlink`. + +## What does Move Randomizer do +If you enable Move Randomizer, most of Jak's movement set will be added to the randomized item pool, and you will need +to receive the move in order to use it (i.e. you must find it, or another player must send it to you). Some moves have +prerequisite moves that you must also have in order to use them (e.g. Crouch Jump is dependent on Crouch). Jak will only +be able to run, swim (including underwater), perform single jumps, and shoot yellow eco from his goggles ("firing from +the hip" requires Punch). Note that Flut Flut and the Zoomer will have access to their full movement sets at all times. + +You can turn off Move Rando at any time in the game by opening the game's menu, navigate to `Options`, +then `Archipelago Options`, then `Move Randomizer`. This will give you access to the full movement set again. + +## What are the movement options in Move Randomizer +| Move Name | Prerequisite Moves | +|-----------------|--------------------| +| Crouch | | +| Crouch Jump | Crouch | +| Crouch Uppercut | Crouch | +| Roll | | +| Roll Jump | Roll | +| Double Jump | | +| Jump Dive | | +| Jump Kick | | +| Punch | | +| Punch Uppercut | Punch | +| Kick | | + +## How do I know which moves I have +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Move Tracker`. +This will show you a list of all the moves in the game. +- Gray items indicate you do not possess that move. +- Yellow items indicate you possess that move, but you are missing its prerequisites. +- Light blue items indicate you possess that move, as well as its prerequisites. + +## What does Orbsanity do +If you enable Orbsanity, bundles of Precursor Orbs will be turned into checks. Every time you collect the chosen number +of orbs, i.e. a "bundle," you will trigger another check. Likewise, the orbs will be added to the random item pool. +There are several options to change the difficulty of this challenge. + +- "Per Level" Orbsanity means the bundles are for each level in the game. (Geyser Rock, Sandover Village, etc.) +- "Global" Orbsanity means orbs collected from any level count toward the next bundle. +- The options with "Bundle Size" in the name indicate how many orbs are in a bundle. This adds a number of Items + and Locations to the pool inversely proportional to the size of the bundle. + - For example, if your bundle size is 20 orbs, you will add 100 items to the pool. If your bundle size is 250 orbs, + you will add 8 items to the pool. + +## What do Traps do +When creating your player YAML, you can choose to replace some of the game's extraneous Power Cells and Precursor Orbs +with traps. You can choose which traps you want to generate in your seed and how long they last. A random assortment +will then be chosen to populate the item pool. + +When you receive one, you will hear a buzzer and some kind of negative effect will occur in game. These effects may be +challenging, maddening, or entertaining. When the trap duration ends, the game should return to its previous state. +Multiple traps can be active at the same time, and they may interact with each other in strange ways. If they become +too frustrating, you can lower their duration by navigating to `Options`, then `Archipelago Options`, then +`Seed Options`, then `Trap Duration`. Lowering this number to zero will disable traps entirely. + +## What kind of Traps are there +| Trap Name | Effect | +|-----------------|--------------------------------------------------------------------------------| +| Trip Trap | Jak trips and falls | +| Slippery Trap | The world gains the physical properties of Snowy Mountain's ice lake | +| Gravity Trap | Jak falls to the ground faster and takes fall damage more easily | +| Camera Trap | The camera remains fixed in place no matter how far away Jak moves | +| Darkness Trap | The world gains the lighting properties of Dark Cave | +| Earthquake Trap | The world and camera shake | +| Teleport Trap | Jak immediately teleports to Samos's Hut | +| Despair Trap | The Warrior sobs profusely | +| Pacifism Trap | Jak's attacks have no effect on enemies, crates, or buttons | +| Ecoless Trap | Jak's eco is drained and he cannot collect new eco | +| Health Trap | Jak's health is set to 0 - not dead yet, but he will die to any attack or bonk | +| Ledge Trap | Jak cannot grab onto ledges | +| Zoomer Trap | Jak mounts an invisible zoomer (model loads properly depending on level) | +| Mirror Trap | The world is mirrored | + +## I got soft-locked and cannot leave how do I get out of here +Open the game's menu, navigate to `Options`, then `Archipelago Options`, then `Warp To Home`. +Selecting this option will ask if you want to be teleported to Geyser Rock. From there, you can teleport back +to the nearest sage's hut to continue your journey. + +## How do I generate seeds with 1 orb orbsanity and other extreme options? +Depending on your player YAML, Jak and Daxter can have a lot of items, which can sometimes be overwhelming or +disruptive to multiworld games. There are also options that are mutually incompatible with each other, even in a solo +game. To prevent the game from disrupting multiworlds, or generating an impossible solo seed, some options have +"friendly limits" that prevent you from choosing more extreme values. + +You can override **some**, not all, of those limits by editing the `host.yaml`. In the Archipelago Launcher, click +`Open host.yaml`, then search for `jakanddaxter_options`, then search for `enforce_friendly_options`, then change this +value from `true` to `false`. You can then generate a seed locally, and upload that to the Archipelago website to host +for you (or host it yourself). + +**Remember:** disabling this setting allows for more disruptive and challenging options, but it may cause seed +generation to fail. **Use at your own risk!** + +## How do I check my player options in-game +When you connect your text client to the Archipelago Server, the server will tell the game what options were chosen +for this seed, and the game will apply those settings automatically. + +You can verify these options by navigating to `Options`, then `Archipelago Options`, then `Seed Options`. **You can open +each option to verify them, but you should NOT alter them during a run.** This may cause you to miss important +progression items and prevent you (and others) from completing the run. + +## How does the HUD work +The game's normal HUD shows you how many power cells, precursor orbs, and scout flies you currently have. But if you +hold `L2 or R2` and press a direction on the D-Pad, the HUD will show you alternate modes. Here is how the HUD works: + +| HUD Mode | Button Combo | What the HUD Shows | Text Messages | +|---------------|------------------------------|-----------------------------------|---------------------------------------| +| Per-Level | `L2 or R2` + `Down` | Locations Checked (in this level) | `SENT {Other Item} TO {Other Player}` | +| Global | `L2 or R2` + `Up` | Locations Checked (in the game) | `GOT {Your Item} FROM {Other Player}` | +| Normal | `L2 or R2` + `Left or Right` | Items Received | Both Sent and Got Messages | +| | | | | +| (In Any Mode) | | (If you sent an Item to Yourself) | `FOUND {Your Item}` | + +In all modes, the last 3 sent/received items and the player who sent/received it will be displayed in the +bottom left corner. This will help you quickly reference information about newly received or sent items. Items in blue +are Progression (or non-Jak items), in green are Filler, and in red are Traps. You can turn this off by navigating +to `Options`, then `Archipelago Options`, then set `Item Messages` to `Off`. + +## I think I found a bug where should I report it +Depending on the nature of the bug, there are a couple of different options. + +* If you found a logical error in the randomizer, please create a new Issue +[here](https://github.com/ArchipelaGOAL/Archipelago/issues). Use this page if: + * An item required for progression is unreachable. + * The randomizer did not respect one of the Options you chose. + * You see a mistake, typo, etc. on this webpage. + * You see an error or stack trace appear on the text client. + +* If you encountered an error in OpenGOAL, please create a new Issue +[here](https://github.com/ArchipelaGOAL/ArchipelaGOAL/issues). Use this page if: + * You encounter a crash, freeze, reset, etc. in the game. + * You fail to send Items you find in the game to the Archipelago server. + * You fail to receive Items the server sends to you. + * Your game disconnects from the server and cannot reconnect. + * You go looking for a game item that has already disappeared before you could reach it. + +* Please upload your config file, spoiler log file, and any other generated logs in the Issue, so we can troubleshoot the problem. \ No newline at end of file diff --git a/worlds/jakanddaxter/docs/setup_en.md b/worlds/jakanddaxter/docs/setup_en.md new file mode 100644 index 000000000000..9cd892a9b2c7 --- /dev/null +++ b/worlds/jakanddaxter/docs/setup_en.md @@ -0,0 +1,181 @@ +# Jak And Daxter (ArchipelaGOAL) Setup Guide + +## Required Software + +- A legally purchased copy of *Jak And Daxter: The Precursor Legacy.* +- [The OpenGOAL Launcher](https://opengoal.dev/) + +At this time, this method of setup works on Windows only, but Linux support is a strong likelihood in the near future as OpenGOAL itself supports Linux. + +## Installation via OpenGOAL Launcher + +**You must set up a vanilla installation of Jak and Daxter before you can install mods for it.** + +- Follow the installation process for the official OpenGOAL Launcher. See [here](https://opengoal.dev/docs/usage/installation). +- Follow the setup process for adding mods to the OpenGOAL Launcher. See [here](https://jakmods.dev/). +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`. +- Under `Available Mods`, click `ArchipelaGOAL`. The mod should begin installing. When it is done, click `Continue` in the bottom right corner. +- **DO NOT PLAY AN ARCHIPELAGO GAME THROUGH THE OPENGOAL LAUNCHER.** The Archipelago Client should handle everything for you. + +### For NTSC versions of the game, follow these steps. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Compile`. + +### For PAL versions of the game, follow these steps. + +PAL versions of the game seem to require additional troubleshooting/setup in order to work properly. +Below are some instructions that may help. +If you see `-- Compilation Error! --` after pressing `Compile` or Launching the ArchipelaGOAL mod, try these steps. + +- Remove these folders if you have them: + - `/iso_data` + - `/iso_data` + - `/data/iso_data` +- Place your Jak1 ISO in `` and rename it to `JakAndDaxter.iso` +- Type `cmd` in Windows search, right click `Command Prompt`, and pick `Run as Administrator` +- Run `cd ` +- Then run `.\extractor.exe --extract --extract-path .\data\iso_data "JakAndDaxter.iso"` + - This command should end by saying `Uses Decompiler Config Version - ntsc_v1` or `... - pal`. Take note of this message. +- If you saw `ntsc_v1`: + - In cmd, run `.\decompiler.exe data\decompiler\config\jak1\jak1_config.jsonc --version "ntsc_v1" data\iso_data data\decompiler_out` +- If you saw `pal`: + - Rename `\data\iso_data\jak1` to `jak1_pal` + - Back in cmd, run `.\decompiler.exe data\decompiler\config\jak1\jak1_config.jsonc --version "pal" data\iso_data data\decompiler_out` + - Rename `\data\iso_data\jak1_pal` back to `jak1` + - Rename `\data\decompiler_out\jak1_pal` back to `jak1` +- Open a **brand new** console window and launch the compiler: + - `cd ` + - `.\goalc.exe --user-auto --game jak1` + - From the compiler (in the same window): `(mi)`. This should compile the game. **Note that the parentheses are important.** + - **Don't close this first terminal, you will need it at the end.** +- Then, open **another brand new** console window and execute the game: + - `cd ` + - `.\gk.exe -v --game jak1 -- -boot -fakeiso -debug` +- Finally, **from the first console still in the GOALC compiler**, connect to the game: `(lt)`. + +## Updates and New Releases via OpenGOAL Launcher + +If you are in the middle of an async game, and you do not want to update the mod, you do not need to do this step. The mod will only update when you tell it to. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- Click `Update` to download and install any new updates that have been released. +- You can verify your version by clicking `Versions`. The version you are using will say `(Active)` next to it. +- **Then you must click `Advanced`, then click `Compile` to make the update take effect.** + +## Starting a Game + +### New Game + +- Run the Archipelago Launcher. +- From the client list, find and click `Jak and Daxter Client`. +- 3 new windows should appear: + - The OpenGOAL compiler will launch and compile the game. They should take about 30 seconds to compile. + - You should hear a musical cue to indicate the compilation was a success. If you do not, see the Troubleshooting section. + - You can **MINIMIZE** the Compiler window, **BUT DO NOT CLOSE IT.** It is required for Archipelago and the game to communicate with each other. + - The game window itself will launch, and Jak will be standing outside Samos's Hut. + - Once compilation is complete, the title sequence will start. + - Finally, the Archipelago text client will open. + - If you see **BOTH** `The REPL is ready!` and `The Memory Reader is ready!` then that should indicate a successful startup. If you do not, see the Troubleshooting section. +- Once you see `CONNECT TO ARCHIPELAGO NOW` on the title screen, use the text client to connect to the Archipelago server. This will communicate your current settings and slot info to the game. +- If you see `RECEIVING ITEMS, PLEASE WAIT...`, the game is busy receiving items from your starting inventory, assuming you have some. +- Once you see `READY! PRESS START TO CONTINUE` on the title screen, you can press Start. +- Choose `New Game`, choose a save file, and play through the opening cutscenes. +- Once you reach Geyser Rock, the game has begun! + - You can leave Geyser Rock immediately if you so choose - just step on the warp gate button. + +### Returning / Async Game +The same steps as New Game apply, with some exceptions: + +- Once you reach the title screen, connect to the Archipelago server **BEFORE** you load your save file. + - This is to allow AP to give the game your current settings and all the items you had previously. + - **THESE SETTINGS AFFECT LOADING AND SAVING OF SAVE FILES, SO IT IS IMPORTANT TO DO THIS FIRST.** +- Once you see `READY! PRESS START TO CONTINUE` on the title screen, you can press Start. +- Instead of choosing `New Game` in the title menu, choose `Load Game`, then choose the save file **THAT HAS YOUR CURRENT SLOT NAME.** + - To help you find the correct save file, highlighting a save will show you that save's slot name and the first 8 digits of the multiworld seed number. + +## Troubleshooting + +### The Text Client Says "Unable to locate the OpenGOAL install directory" + +Normally, the Archipelago client should be able to find your OpenGOAL installation automatically. + +If it cannot, you may have to tell it yourself. Follow these instructions. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- Click `Advanced` in the bottom right corner, then click `Open Game Data Folder`. You should see a new File Explorer open to that directory. +- In the File Explorer, go to the parent directory called `archipelagoal`, and you should see the `gk.exe` and `goalc.exe` executables. Copy this path. +- Run the Archipelago Launcher, then click on `Open host.yaml`. You should see a new text editor open that file. +- Search for `jakanddaxter_options`, and you will need to make 2 changes here. +- First, find the `root_directory` entry. Paste the path you noted earlier (the one containing gk.exe and goalc.exe) inside the double quotes. +- **MAKE SURE YOU CHANGE ALL BACKSLASHES `\ ` TO FORWARD SLASHES `/`.** + +```yaml + root_directory: "%programfiles%/OpenGOAL-Launcher/features/jak1/mods/JakMods/archipelagoal" +``` + +- Second, find the `root_directory` entry. Change this to `false`. You do not need to use double quotes. + +```yaml + auto_detect_root_directory: true +``` + +- Save the file and close it. + +### The Game Fails To Load The Title Screen + +You may start the game via the Text Client, but it never loads in the title screen. Check the Compiler window: you may see red and yellow errors like this. + +``` +-- Compilation Error! -- +``` + +If this happens, follow these instructions. If you are using a PAL version of the game, you should skip these instructions and follow the `Special PAL Instructions` above. + +- Run the OpenGOAL Launcher (if you had it open before, close it and reopen it). +- Click the Jak and Daxter logo on the left sidebar, then click `Advanced`, then click `Open Game Data Folder`. Copy the `iso_data` folder from this directory. +- Back in the OpenGOAL Launcher, click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Open Game Data Folder`. +- Paste the `iso_data` folder you copied earlier. +- Back in the OpenGOAL Launcher, click the Jak and Daxter logo on the left sidebar. +- Click `Features` in the bottom right corner, then click `Mods`, then under `Installed Mods`, click `ArchipelaGOAL`. +- In the bottom right corner, click `Advanced`, then click `Compile`. + +### The Text Client Says "Error reading game memory!" or "Error sending data to compiler" + +If at any point the text client says this, you will need to restart the **all** of these applications. + +- Close all open windows: the client, the compiler, and the game. +- Run the OpenGOAL Launcher, then click `Features`, then click `Mods`, then click `ArchipelaGOAL`. +- Click `Advanced`, then click `Play in Debug Mode`. +- Click `Advanced`, then click `Open REPL`. +- Then close and reopen the Jak and Daxter Client from the Archipelago Launcher. +- Once these are done, you can enter `/repl status` and `/memr status` in the text client to verify. + +### The Client Cannot Open A REPL Connection + +If the client cannot open a REPL connection to the game, you may need to check the following steps: + +- Ensure you are not hosting anything on ports `8181` and `8112`. Those are for the REPL (goalc) and the game (gk) respectively. +- Ensure that Windows Defender and Windows Firewall are not blocking those programs from hosting or listening on those ports. +- You can use Windows Resource Monitor to verify those ports are open when the programs are running. +- Ensure that you only opened those ports for your local network, not the wider internet. + +## Known Issues + +- The game needs to boot in debug mode in order to allow the compiler to connect to it. **Clicking "Play" on the mod page in the OpenGOAL Launcher will not work.** +- The Compiler console window is orphaned once you close the game - you will have to kill it manually when you stop playing. +- The console windows cannot be run as background processes due to how the REPL works, so the best we can do is minimize them. +- Orbsanity checks may show up out of order in the text client. +- Large item releases may take up to several minutes for the game to process them all. Item Messages will usually take longer to appear than Items themselves. +- In Lost Precursor City, if you die in the Color Platforms room, the game may crash after you respawn. The cause is unknown. +- Darkness Trap may cause some visual glitches on certain levels. This is temporary, and terrain and object collision are unaffected. diff --git a/worlds/jakanddaxter/game_id.py b/worlds/jakanddaxter/game_id.py new file mode 100644 index 000000000000..d596a6cc824a --- /dev/null +++ b/worlds/jakanddaxter/game_id.py @@ -0,0 +1,8 @@ +# All Jak And Daxter Archipelago IDs must be offset by this number. +jak1_id = 741000000 + +# This is maximum ID we will allow. +jak1_max = jak1_id + 999999 + +# The name of the game. +jak1_name = "Jak and Daxter: The Precursor Legacy" diff --git a/worlds/jakanddaxter/icons/precursor_orb.ico b/worlds/jakanddaxter/icons/precursor_orb.ico new file mode 100644 index 000000000000..f0cd1a0eec25 Binary files /dev/null and b/worlds/jakanddaxter/icons/precursor_orb.ico differ diff --git a/worlds/jakanddaxter/icons/precursor_orb.png b/worlds/jakanddaxter/icons/precursor_orb.png new file mode 100644 index 000000000000..8089170e2f5a Binary files /dev/null and b/worlds/jakanddaxter/icons/precursor_orb.png differ diff --git a/worlds/jakanddaxter/items.py b/worlds/jakanddaxter/items.py new file mode 100644 index 000000000000..e15f28ae325e --- /dev/null +++ b/worlds/jakanddaxter/items.py @@ -0,0 +1,156 @@ +from enum import IntEnum +from BaseClasses import Item, ItemClassification +from .game_id import jak1_name, jak1_max +from .locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches) + + +class OrbAssoc(IntEnum): + """ + Identifies an item's association to unlocking new sources of Precursor Orbs. For example, Double Jump will unlock + new orbs, but Freed the Green Sage will not. Power Cells conditionally unlock new orbs if they get you across + connector levels. + """ + NEVER_UNLOCKS_ORBS = 0 + ALWAYS_UNLOCKS_ORBS = 1 + IS_POWER_CELL = 2 + + +class JakAndDaxterItem(Item): + game: str = jak1_name + orb_assoc: OrbAssoc + orb_amount: int # Only non-zero for Orb Bundle items. + + def __init__(self, name: str, + classification: ItemClassification, + code: int | None, + player: int, + orb_assoc: OrbAssoc = OrbAssoc.NEVER_UNLOCKS_ORBS, + orb_amount: int = 0): + super().__init__(name, classification, code, player) + self.orb_assoc = orb_assoc + self.orb_amount = orb_amount + + +# Power Cells are generic, fungible, interchangeable items. Every cell is indistinguishable from every other. +cell_item_table = { + 0: "Power Cell", +} + +# Scout flies are interchangeable within their respective sets of 7. Notice the level name after each item. +# Also, notice that their Item ID equals their respective Power Cell's Location ID. This is necessary for +# game<->archipelago communication. +scout_item_table = { + 95: "Scout Fly - Geyser Rock", + 75: "Scout Fly - Sandover Village", + 7: "Scout Fly - Forbidden Jungle", + 20: "Scout Fly - Sentinel Beach", + 28: "Scout Fly - Misty Island", + 68: "Scout Fly - Fire Canyon", + 76: "Scout Fly - Rock Village", + 57: "Scout Fly - Precursor Basin", + 49: "Scout Fly - Lost Precursor City", + 43: "Scout Fly - Boggy Swamp", + 88: "Scout Fly - Mountain Pass", + 77: "Scout Fly - Volcanic Crater", + 85: "Scout Fly - Spider Cave", + 65: "Scout Fly - Snowy Mountain", + 90: "Scout Fly - Lava Tube", + 91: "Scout Fly - Citadel", # Had to shorten, it was >32 characters. +} + +# Orbs are also generic and interchangeable. +# These items are only used by Orbsanity, and only one of these +# items will be used corresponding to the chosen bundle size. +orb_item_table = { + 1: "1 Precursor Orb", + 2: "2 Precursor Orbs", + 4: "4 Precursor Orbs", + 5: "5 Precursor Orbs", + 8: "8 Precursor Orbs", + 10: "10 Precursor Orbs", + 16: "16 Precursor Orbs", + 20: "20 Precursor Orbs", + 25: "25 Precursor Orbs", + 40: "40 Precursor Orbs", + 50: "50 Precursor Orbs", + 80: "80 Precursor Orbs", + 100: "100 Precursor Orbs", + 125: "125 Precursor Orbs", + 200: "200 Precursor Orbs", + 250: "250 Precursor Orbs", + 400: "400 Precursor Orbs", + 500: "500 Precursor Orbs", + 1000: "1000 Precursor Orbs", + 2000: "2000 Precursor Orbs", +} + +# These are special items representing unique unlocks in the world. Notice that their Item ID equals their +# respective Location ID. Like scout flies, this is necessary for game<->archipelago communication. +special_item_table = { + 5: "Fisherman's Boat", # Unlocks Misty Island + 4: "Jungle Elevator", # Unlocks the Forbidden Jungle Temple + 2: "Blue Eco Switch", # Unlocks Blue Eco Vents + 17: "Flut Flut", # Unlocks Flut Flut sections in Boggy Swamp and Snowy Mountain + 33: "Warrior's Pontoons", # Unlocks Boggy Swamp and everything post-Rock Village + 105: "Snowy Mountain Gondola", # Unlocks Snowy Mountain + 60: "Yellow Eco Switch", # Unlocks Yellow Eco Vents + 63: "Snowy Fort Gate", # Unlocks the Snowy Mountain Fort + 71: "Freed The Blue Sage", # 1 of 3 unlocks for the final staircase in Citadel + 72: "Freed The Red Sage", # 1 of 3 unlocks for the final staircase in Citadel + 73: "Freed The Yellow Sage", # 1 of 3 unlocks for the final staircase in Citadel + 70: "Freed The Green Sage", # Unlocks the final boss elevator in Citadel +} + +# These are the move items for move randomizer. Notice that their Item ID equals some of the Orb Cache Location ID's. +# This was 100% arbitrary. There's no reason to tie moves to orb caches except that I need a place to put them. ;_; +move_item_table = { + 10344: "Crouch", + 10369: "Crouch Jump", + 11072: "Crouch Uppercut", + 12634: "Roll", + 12635: "Roll Jump", + 10945: "Double Jump", + 14507: "Jump Dive", + 14838: "Jump Kick", + 23348: "Punch", + 23349: "Punch Uppercut", + 23350: "Kick", + # 24038: "Orb Cache at End of Blast Furnace", # Hold onto these ID's for future use. + # 24039: "Orb Cache at End of Launch Pad Room", + # 24040: "Orb Cache at Start of Launch Pad Room", +} + +# These are trap items. Their Item ID is to be subtracted from the base game ID. They do not have corresponding +# game locations because they are intended to replace other items that have been marked as filler. +trap_item_table = { + 1: "Trip Trap", + 2: "Slippery Trap", + 3: "Gravity Trap", + 4: "Camera Trap", + 5: "Darkness Trap", + 6: "Earthquake Trap", + 7: "Teleport Trap", + 8: "Despair Trap", + 9: "Pacifism Trap", + 10: "Ecoless Trap", + 11: "Health Trap", + 12: "Ledge Trap", + 13: "Zoomer Trap", + 14: "Mirror Trap", +} + +# All Items +# While we're here, do all the ID conversions needed. +item_table = { + **{cells.to_ap_id(k): name for k, name in cell_item_table.items()}, + **{scouts.to_ap_id(k): name for k, name in scout_item_table.items()}, + **{specials.to_ap_id(k): name for k, name in special_item_table.items()}, + **{caches.to_ap_id(k): name for k, name in move_item_table.items()}, + **{orbs.to_ap_id(k): name for k, name in orb_item_table.items()}, + **{jak1_max - k: name for k, name in trap_item_table.items()}, + jak1_max: "Green Eco Pill" # Filler item. +} diff --git a/worlds/jakanddaxter/levels.py b/worlds/jakanddaxter/levels.py new file mode 100644 index 000000000000..2deb2d20879d --- /dev/null +++ b/worlds/jakanddaxter/levels.py @@ -0,0 +1,76 @@ +# This contains the list of levels in Jak and Daxter. +# Not to be confused with Regions - there can be multiple Regions in every Level. +level_table = { + "Geyser Rock": { + "level_index": 0, + "orbs": 50 + }, + "Sandover Village": { + "level_index": 1, + "orbs": 50 + }, + "Sentinel Beach": { + "level_index": 2, + "orbs": 150 + }, + "Forbidden Jungle": { + "level_index": 3, + "orbs": 150 + }, + "Misty Island": { + "level_index": 4, + "orbs": 150 + }, + "Fire Canyon": { + "level_index": 5, + "orbs": 50 + }, + "Rock Village": { + "level_index": 6, + "orbs": 50 + }, + "Lost Precursor City": { + "level_index": 7, + "orbs": 200 + }, + "Boggy Swamp": { + "level_index": 8, + "orbs": 200 + }, + "Precursor Basin": { + "level_index": 9, + "orbs": 200 + }, + "Mountain Pass": { + "level_index": 10, + "orbs": 50 + }, + "Volcanic Crater": { + "level_index": 11, + "orbs": 50 + }, + "Snowy Mountain": { + "level_index": 12, + "orbs": 200 + }, + "Spider Cave": { + "level_index": 13, + "orbs": 200 + }, + "Lava Tube": { + "level_index": 14, + "orbs": 50 + }, + "Gol and Maia's Citadel": { + "level_index": 15, + "orbs": 200 + } +} + +level_table_with_global = { + **level_table, + "": { + "level_index": 16, # Global + "orbs": 2000 + } +} diff --git a/worlds/jakanddaxter/locations.py b/worlds/jakanddaxter/locations.py new file mode 100644 index 000000000000..901c9811db09 --- /dev/null +++ b/worlds/jakanddaxter/locations.py @@ -0,0 +1,66 @@ +from BaseClasses import Location +from .game_id import jak1_name +from .locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches) + + +class JakAndDaxterLocation(Location): + game: str = jak1_name + + +# Different tables for location groups. +# Each Item ID == its corresponding Location ID. While we're here, do all the ID conversions needed. +cell_location_table = { + **{cells.to_ap_id(k): name for k, name in cells.loc7SF_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locGR_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSV_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locFJ_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSB_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locMI_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locFC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locRV_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locPB_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locLPC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locBS_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locMP_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locVC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSC_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locSM_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locLT_cellTable.items()}, + **{cells.to_ap_id(k): name for k, name in cells.locGMC_cellTable.items()}, +} + +scout_location_table = { + **{scouts.to_ap_id(k): name for k, name in scouts.locGR_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSV_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locFJ_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSB_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locMI_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locFC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locRV_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locPB_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locLPC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locBS_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locMP_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locVC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSC_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locSM_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locLT_scoutTable.items()}, + **{scouts.to_ap_id(k): name for k, name in scouts.locGMC_scoutTable.items()}, +} + +special_location_table = {specials.to_ap_id(k): name for k, name in specials.loc_specialTable.items()} +cache_location_table = {caches.to_ap_id(k): name for k, name in caches.loc_orbCacheTable.items()} +orb_location_table = {orbs.to_ap_id(k): name for k, name in orbs.loc_orbBundleTable.items()} + +# All Locations +location_table = { + **cell_location_table, + **scout_location_table, + **special_location_table, + **cache_location_table, + **orb_location_table +} diff --git a/worlds/jakanddaxter/locs/__init__.py b/worlds/jakanddaxter/locs/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/locs/cell_locations.py b/worlds/jakanddaxter/locs/cell_locations.py new file mode 100644 index 000000000000..62f63e07df78 --- /dev/null +++ b/worlds/jakanddaxter/locs/cell_locations.py @@ -0,0 +1,194 @@ +from ..game_id import jak1_id + +# Power Cells are given ID's between 0 and 116 by the game. + +# The game tracks all game-tasks as integers. +# 101 of these ID's correspond directly to power cells, but they are not +# necessarily ordered, nor are they the first 101 in the task list. +# The remaining ones are cutscenes and other events. + + +# These helper functions do all the math required to get information about each +# power cell and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + game_id + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id + + +# The ID's you see below correspond directly to that cell's game-task ID. + +# The "Free 7 Scout Flies" Power Cells will be unlocked separately from their respective levels. +loc7SF_cellTable = { + 95: "GR: Free 7 Scout Flies", + 75: "SV: Free 7 Scout Flies", + 7: "FJ: Free 7 Scout Flies", + 20: "SB: Free 7 Scout Flies", + 28: "MI: Free 7 Scout Flies", + 68: "FC: Free 7 Scout Flies", + 76: "RV: Free 7 Scout Flies", + 57: "PB: Free 7 Scout Flies", + 49: "LPC: Free 7 Scout Flies", + 43: "BS: Free 7 Scout Flies", + 88: "MP: Free 7 Scout Flies", + 77: "VC: Free 7 Scout Flies", + 85: "SC: Free 7 Scout Flies", + 65: "SM: Free 7 Scout Flies", + 90: "LT: Free 7 Scout Flies", + 91: "GMC: Free 7 Scout Flies", +} + +# Geyser Rock +locGR_cellTable = { + 92: "GR: Find The Cell On The Path", + 93: "GR: Open The Precursor Door", + 94: "GR: Climb Up The Cliff", +} + +# Sandover Village +locSV_cellTable = { + 11: "SV: Bring 90 Orbs To The Mayor", + 12: "SV: Bring 90 Orbs to Your Uncle", + 10: "SV: Herd The Yakows Into The Pen", + 13: "SV: Bring 120 Orbs To The Oracle (1)", + 14: "SV: Bring 120 Orbs To The Oracle (2)", +} + +# Forbidden Jungle +locFJ_cellTable = { + 3: "FJ: Connect The Eco Beams", + 4: "FJ: Get To The Top Of The Temple", + 2: "FJ: Find The Blue Vent Switch", + 6: "FJ: Defeat The Dark Eco Plant", + 5: "FJ: Catch 200 Pounds Of Fish", + 8: "FJ: Follow The Canyon To The Sea", + 9: "FJ: Open The Locked Temple Door", +} + +# Sentinel Beach +locSB_cellTable = { + 15: "SB: Unblock The Eco Harvesters", + 17: "SB: Push The Flut Flut Egg Off The Cliff", + 16: "SB: Get The Power Cell From The Pelican", + 18: "SB: Chase The Seagulls", + 19: "SB: Launch Up To The Cannon Tower", + 21: "SB: Explore The Beach", + 22: "SB: Climb The Sentinel", +} + +# Misty Island +locMI_cellTable = { + 23: "MI: Catch The Sculptor's Muse", + 24: "MI: Climb The Lurker Ship", + 26: "MI: Stop The Cannon", + 25: "MI: Return To The Dark Eco Pool", + 27: "MI: Destroy the Balloon Lurkers", + 29: "MI: Use Zoomer To Reach Power Cell", + 30: "MI: Use Blue Eco To Reach Power Cell", +} + +# Fire Canyon +locFC_cellTable = { + 69: "FC: Reach The End Of Fire Canyon", +} + +# Rock Village +locRV_cellTable = { + 31: "RV: Bring 90 Orbs To The Gambler", + 32: "RV: Bring 90 Orbs To The Geologist", + 33: "RV: Bring 90 Orbs To The Warrior", + 34: "RV: Bring 120 Orbs To The Oracle (1)", + 35: "RV: Bring 120 Orbs To The Oracle (2)", +} + +# Precursor Basin +locPB_cellTable = { + 54: "PB: Herd The Moles Into Their Hole", + 53: "PB: Catch The Flying Lurkers", + 52: "PB: Beat Record Time On The Gorge", + 56: "PB: Get The Power Cell Over The Lake", + 55: "PB: Cure Dark Eco Infected Plants", + 58: "PB: Navigate The Purple Precursor Rings", + 59: "PB: Navigate The Blue Precursor Rings", +} + +# Lost Precursor City +locLPC_cellTable = { + 47: "LPC: Raise The Chamber", + 45: "LPC: Follow The Colored Pipes", + 46: "LPC: Reach The Bottom Of The City", + 48: "LPC: Quickly Cross The Dangerous Pool", + 44: "LPC: Match The Platform Colors", + 50: "LPC: Climb The Slide Tube", + 51: "LPC: Reach The Center Of The Complex", +} + +# Boggy Swamp +locBS_cellTable = { + 37: "BS: Ride The Flut Flut", + 36: "BS: Protect Farthy's Snacks", + 38: "BS: Defeat The Lurker Ambush", + 39: "BS: Break The Tethers To The Zeppelin (1)", + 40: "BS: Break The Tethers To The Zeppelin (2)", + 41: "BS: Break The Tethers To The Zeppelin (3)", + 42: "BS: Break The Tethers To The Zeppelin (4)", +} + +# Mountain Pass +locMP_cellTable = { + 86: "MP: Defeat Klaww", + 87: "MP: Reach The End Of The Mountain Pass", + 110: "MP: Find The Hidden Power Cell", +} + +# Volcanic Crater +locVC_cellTable = { + 96: "VC: Bring 90 Orbs To The Miners (1)", + 97: "VC: Bring 90 Orbs To The Miners (2)", + 98: "VC: Bring 90 Orbs To The Miners (3)", + 99: "VC: Bring 90 Orbs To The Miners (4)", + 100: "VC: Bring 120 Orbs To The Oracle (1)", + 101: "VC: Bring 120 Orbs To The Oracle (2)", + 74: "VC: Find The Hidden Power Cell", +} + +# Spider Cave +locSC_cellTable = { + 78: "SC: Use Your Goggles To Shoot The Gnawing Lurkers", + 79: "SC: Destroy The Dark Eco Crystals", + 80: "SC: Explore The Dark Cave", + 81: "SC: Climb The Giant Robot", + 82: "SC: Launch To The Poles", + 83: "SC: Navigate The Spider Tunnel", + 84: "SC: Climb the Precursor Platforms", +} + +# Snowy Mountain +locSM_cellTable = { + 60: "SM: Find The Yellow Vent Switch", + 61: "SM: Stop The 3 Lurker Glacier Troops", + 66: "SM: Deactivate The Precursor Blockers", + 67: "SM: Open The Frozen Crate", + 63: "SM: Open The Lurker Fort Gate", + 62: "SM: Get Through The Lurker Fort", + 64: "SM: Survive The Lurker Infested Cave", +} + +# Lava Tube +locLT_cellTable = { + 89: "LT: Cross The Lava Tube", +} + +# Gol and Maias Citadel +locGMC_cellTable = { + 71: "GMC: Free The Blue Sage", + 72: "GMC: Free The Red Sage", + 73: "GMC: Free The Yellow Sage", + 70: "GMC: Free The Green Sage", +} diff --git a/worlds/jakanddaxter/locs/orb_cache_locations.py b/worlds/jakanddaxter/locs/orb_cache_locations.py new file mode 100644 index 000000000000..b0ed6c1c979c --- /dev/null +++ b/worlds/jakanddaxter/locs/orb_cache_locations.py @@ -0,0 +1,52 @@ +from ..game_id import jak1_id + +# These are the locations of Orb Caches throughout the game, unlockable only with blue eco. +# They are not game collectables and thus don't have the same kinds of game ID's. They do, however, have actor ID's. +# There are a total of 14 in the game. + +# When these are opened, we can execute a hook in the mod that might be able to tell us which orb cache we opened, +# by ID, and that will allow us to map a Location object to it. We'll be using these for Move Randomizer, +# where each move is "mapped" to an Orb Cache being unlocked. Obviously, they will then be randomized, but with moves +# not being considered Items by the game, we need to conjure SOME kind of Location for them, and Orb Caches is the best +# we can do. + +# We can use 2^12 to offset these from special checks, just like we offset those from scout flies +# by 2^11. Special checks don't exceed an ID of (jak1_id + 2153). +orb_cache_offset = 4096 + + +# These helper functions do all the math required to get information about each +# special check and translate its ID between AP and OpenGOAL. Similar to Scout Flies, these large numbers are not +# necessary, and we can flatten out the range in which these numbers lie. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + uncompressed_id = jak1_id + orb_cache_offset + game_id # Add the offsets and the orb cache Actor ID. + return uncompressed_id - 10344 # Subtract the smallest Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + uncompressed_id = ap_id + 10344 # Reverse process, add back the smallest Actor ID. + return uncompressed_id - jak1_id - orb_cache_offset # Subtract the offsets. + + +# The ID's you see below correlate to the Actor ID of each Orb Cache. + +loc_orbCacheTable = { + 10344: "Orb Cache in Sandover Village", + 10369: "Orb Cache in Forbidden Jungle", + 11072: "Orb Cache on Misty Island", + 12634: "Orb Cache near Flut Flut Egg", + 12635: "Orb Cache near Pelican's Nest", + 10945: "Orb Cache in Rock Village", + 14507: "Orb Cache in First Sunken Chamber", + 14838: "Orb Cache in Second Sunken Chamber", + 23348: "Orb Cache in Snowy Fort (1)", + 23349: "Orb Cache in Snowy Fort (2)", + 23350: "Orb Cache in Snowy Fort (3)", + 24038: "Orb Cache at End of Blast Furnace", + 24039: "Orb Cache at End of Launch Pad Room", + 24040: "Orb Cache at Start of Launch Pad Room", +} diff --git a/worlds/jakanddaxter/locs/orb_locations.py b/worlds/jakanddaxter/locs/orb_locations.py new file mode 100644 index 000000000000..2b69465a98fa --- /dev/null +++ b/worlds/jakanddaxter/locs/orb_locations.py @@ -0,0 +1,123 @@ +from ..game_id import jak1_id +from ..levels import level_table_with_global + +# Precursor Orbs are not necessarily given ID's by the game. + +# Of the 2000 orbs (or "money") you can pick up, only 1233 are standalone ones you find in the overworld. +# We can identify them by Actor ID's, which run from 549 to 24433. Other actors reside in this range, +# so like Power Cells these are not ordered, nor contiguous, nor exclusively orbs. + +# In fact, other ID's in this range belong to actors that spawn orbs when they are activated or when they die, +# like steel crates, orb caches, Spider Cave gnawers, or jumping on the Plant Boss's head. These orbs that spawn +# from parent actors DON'T have an Actor ID themselves - the parent object keeps track of how many of its orbs +# have been picked up. + +# In order to deal with this mess, we're creating 2 extra functions that will create and identify Orb Locations for us. +# These will be compatible with both Global Orbsanity and Per-Level Orbsanity, allowing us to create any +# number of Locations depending on the bundle size chosen, while also guaranteeing that each has a unique address. + +# We can use 2^15 to offset them from Orb Caches, because Orb Cache ID's max out at (jak1_id + 17792). +orb_offset = 32768 + + +# These helper functions do all the math required to get information about each +# precursor orb and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + orb_offset + game_id # Add the offsets and the orb Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id - orb_offset # Reverse process, subtract the offsets. + + +# Use this when the Memory Reader learns that you checked a specific bundle. +# Offset each level by 200 orbs (max number in any level), {200, 400, ...} +# then divide orb count by bundle size, {201, 202, ...} +# then subtract 1. {200, 201, ...} +def find_address(level_index: int, orb_count: int, bundle_size: int) -> int: + result = (level_index * 200) + (orb_count // bundle_size) - 1 + return result + + +# Use this when assigning addresses during region generation. +def create_address(level_index: int, bundle_index: int) -> int: + result = (level_index * 200) + bundle_index + return result + + +# What follows is our methods of generating all the name/ID pairs for location_name_to_id. +# Remember that not every bundle will be used in the actual seed, we just need a static map of strings to ints. +locGR_orbBundleTable = {create_address(level_table_with_global["Geyser Rock"]["level_index"], index): + f"Geyser Rock Orb Bundle {index + 1}" + for index in range(level_table_with_global["Geyser Rock"]["orbs"])} +locSV_orbBundleTable = {create_address(level_table_with_global["Sandover Village"]["level_index"], index): + f"Sandover Village Orb Bundle {index + 1}" + for index in range(level_table_with_global["Sandover Village"]["orbs"])} +locFJ_orbBundleTable = {create_address(level_table_with_global["Forbidden Jungle"]["level_index"], index): + f"Forbidden Jungle Orb Bundle {index + 1}" + for index in range(level_table_with_global["Forbidden Jungle"]["orbs"])} +locSB_orbBundleTable = {create_address(level_table_with_global["Sentinel Beach"]["level_index"], index): + f"Sentinel Beach Orb Bundle {index + 1}" + for index in range(level_table_with_global["Sentinel Beach"]["orbs"])} +locMI_orbBundleTable = {create_address(level_table_with_global["Misty Island"]["level_index"], index): + f"Misty Island Orb Bundle {index + 1}" + for index in range(level_table_with_global["Misty Island"]["orbs"])} +locFC_orbBundleTable = {create_address(level_table_with_global["Fire Canyon"]["level_index"], index): + f"Fire Canyon Orb Bundle {index + 1}" + for index in range(level_table_with_global["Fire Canyon"]["orbs"])} +locRV_orbBundleTable = {create_address(level_table_with_global["Rock Village"]["level_index"], index): + f"Rock Village Orb Bundle {index + 1}" + for index in range(level_table_with_global["Rock Village"]["orbs"])} +locLPC_orbBundleTable = {create_address(level_table_with_global["Lost Precursor City"]["level_index"], index): + f"Lost Precursor City Orb Bundle {index + 1}" + for index in range(level_table_with_global["Lost Precursor City"]["orbs"])} +locBS_orbBundleTable = {create_address(level_table_with_global["Boggy Swamp"]["level_index"], index): + f"Boggy Swamp Orb Bundle {index + 1}" + for index in range(level_table_with_global["Boggy Swamp"]["orbs"])} +locPB_orbBundleTable = {create_address(level_table_with_global["Precursor Basin"]["level_index"], index): + f"Precursor Basin Orb Bundle {index + 1}" + for index in range(level_table_with_global["Precursor Basin"]["orbs"])} +locMP_orbBundleTable = {create_address(level_table_with_global["Mountain Pass"]["level_index"], index): + f"Mountain Pass Orb Bundle {index + 1}" + for index in range(level_table_with_global["Mountain Pass"]["orbs"])} +locVC_orbBundleTable = {create_address(level_table_with_global["Volcanic Crater"]["level_index"], index): + f"Volcanic Crater Orb Bundle {index + 1}" + for index in range(level_table_with_global["Volcanic Crater"]["orbs"])} +locSM_orbBundleTable = {create_address(level_table_with_global["Snowy Mountain"]["level_index"], index): + f"Snowy Mountain Orb Bundle {index + 1}" + for index in range(level_table_with_global["Snowy Mountain"]["orbs"])} +locSC_orbBundleTable = {create_address(level_table_with_global["Spider Cave"]["level_index"], index): + f"Spider Cave Orb Bundle {index + 1}" + for index in range(level_table_with_global["Spider Cave"]["orbs"])} +locLT_orbBundleTable = {create_address(level_table_with_global["Lava Tube"]["level_index"], index): + f"Lava Tube Orb Bundle {index + 1}" + for index in range(level_table_with_global["Lava Tube"]["orbs"])} +locGMC_orbBundleTable = {create_address(level_table_with_global["Gol and Maia's Citadel"]["level_index"], index): + f"Gol and Maia's Citadel Orb Bundle {index + 1}" + for index in range(level_table_with_global["Gol and Maia's Citadel"]["orbs"])} +locGlobal_orbBundleTable = {create_address(level_table_with_global[""]["level_index"], index): + f"Orb Bundle {index + 1}" + for index in range(level_table_with_global[""]["orbs"])} +loc_orbBundleTable = { + **locGR_orbBundleTable, + **locSV_orbBundleTable, + **locSB_orbBundleTable, + **locFJ_orbBundleTable, + **locMI_orbBundleTable, + **locFC_orbBundleTable, + **locRV_orbBundleTable, + **locLPC_orbBundleTable, + **locBS_orbBundleTable, + **locPB_orbBundleTable, + **locMP_orbBundleTable, + **locVC_orbBundleTable, + **locSM_orbBundleTable, + **locSC_orbBundleTable, + **locLT_orbBundleTable, + **locGMC_orbBundleTable, + **locGlobal_orbBundleTable +} diff --git a/worlds/jakanddaxter/locs/scout_locations.py b/worlds/jakanddaxter/locs/scout_locations.py new file mode 100644 index 000000000000..892bb973e054 --- /dev/null +++ b/worlds/jakanddaxter/locs/scout_locations.py @@ -0,0 +1,230 @@ +from ..game_id import jak1_id + +# Scout Flies are given ID's between 0 and 393311 by the game, explanation below. + +# Each fly (or "buzzer") is given a unique 32-bit number broken into two 16-bit numbers. +# The lower 16 bits are the game-task ID of the power cell the fly corresponds to. +# The higher 16 bits are the index of the fly itself, from 000 (0) to 110 (6). + +# Ex: The final scout fly on Geyser Rock +# 0000000000000110 0000000001011111 +# ( Index: 6 ) ( Cell: 95 ) + +# Because flies are indexed from 0, each 0th fly's full ID == the power cell's ID. +# So we need to offset all of their ID's in order for Archipelago to separate them +# from their power cells. We can use 1024 (2^10) for this purpose, because scout flies +# only ever need 10 bits to identify themselves (3 for the index, 7 for the cell ID). + +# We're also going to compress the ID by bit-shifting the fly index down to lower bits, +# keeping the scout fly ID range to a smaller set of numbers (1000 -> 2000, instead of 1 -> 400000). +fly_offset = 1024 + + +# These helper functions do all the math required to get information about each +# scout fly and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + cell_id = get_cell_id(game_id) # Get the power cell ID from the lowest 7 bits. + buzzer_index = (game_id - cell_id) >> 9 # Get the index, bit shift it down 9 places. + compressed_id = fly_offset + buzzer_index + cell_id # Add the offset, the bit-shifted index, and the cell ID. + return jak1_id + compressed_id # Last thing: add the game's ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + compressed_id = ap_id - jak1_id # Reverse process. First thing: subtract the game's ID. + cell_id = get_cell_id(compressed_id) # Get the power cell ID from the lowest 7 bits. + buzzer_index = compressed_id - fly_offset - cell_id # Get the bit-shifted index. + return (buzzer_index << 9) + cell_id # Return the index to its normal place, re-add the cell ID. + + +# Get the power cell ID from the lowest 7 bits. +# Make sure to use this function ONLY when the input argument does NOT include jak1_id, +# because that number may flip some of the bottom 7 bits, and that will throw off this bit mask. +def get_cell_id(buzzer_id: int) -> int: + if buzzer_id >= jak1_id: + raise ValueError(f"Attempted to bit mask {buzzer_id}, but it is polluted by the game's ID {jak1_id}.") + return buzzer_id & 0b1111111 + + +# The ID's you see below correspond directly to that fly's 32-bit ID in the game. +# I used the decompiled entity JSON's and Jak's X/Y coordinates in Debug Mode +# to determine which box ID is which location. + +# Geyser Rock +locGR_scoutTable = { + 95: "GR: Scout Fly On Ground, Front", + 327775: "GR: Scout Fly On Ground, Back", + 393311: "GR: Scout Fly On Left Ledge", + 65631: "GR: Scout Fly On Right Ledge", + 262239: "GR: Scout Fly On Middle Ledge, Left", + 131167: "GR: Scout Fly On Middle Ledge, Right", + 196703: "GR: Scout Fly On Top Ledge" +} + +# Sandover Village +locSV_scoutTable = { + 262219: "SV: Scout Fly In Fisherman's House", + 327755: "SV: Scout Fly In Mayor's House", + 131147: "SV: Scout Fly Under Bridge", + 65611: "SV: Scout Fly Behind Sculptor's House", + 75: "SV: Scout Fly Overlooking Farmer's House", + 393291: "SV: Scout Fly Near Oracle", + 196683: "SV: Scout Fly In Farmer's House" +} + +# Forbidden Jungle +locFJ_scoutTable = { + 393223: "FJ: Scout Fly At End Of Path", + 262151: "FJ: Scout Fly On Spiral Of Stumps", + 7: "FJ: Scout Fly Near Dark Eco Boxes", + 196615: "FJ: Scout Fly At End Of River", + 131079: "FJ: Scout Fly Behind Lurker Machine", + 327687: "FJ: Scout Fly Around Temple Spire", + 65543: "FJ: Scout Fly On Top Of Temple" +} + +# Sentinel Beach +locSB_scoutTable = { + 327700: "SB: Scout Fly At Entrance", + 20: "SB: Scout Fly Overlooking Locked Boxes", + 65556: "SB: Scout Fly On Path To Flut Flut", + 262164: "SB: Scout Fly Under Wood Pillars", + 196628: "SB: Scout Fly Overlooking Blue Eco Vent", + 131092: "SB: Scout Fly Overlooking Green Eco Vents", + 393236: "SB: Scout Fly On Sentinel" +} + +# Misty Island +locMI_scoutTable = { + 327708: "MI: Scout Fly Overlooking Entrance", + 65564: "MI: Scout Fly On Ledge Near Arena Entrance", + 262172: "MI: Scout Fly Near Arena Door", + 28: "MI: Scout Fly On Ledge Near Arena Exit", + 131100: "MI: Scout Fly On Ship", + 196636: "MI: Scout Fly On Barrel Ramps", + 393244: "MI: Scout Fly On Zoomer Ramps" +} + +# Fire Canyon +locFC_scoutTable = { + 393284: "FC: Scout Fly 1", + 68: "FC: Scout Fly 2", + 65604: "FC: Scout Fly 3", + 196676: "FC: Scout Fly 4", + 131140: "FC: Scout Fly 5", + 262212: "FC: Scout Fly 6", + 327748: "FC: Scout Fly 7" +} + +# Rock Village +locRV_scoutTable = { + 76: "RV: Scout Fly Behind Sage's Hut", + 131148: "RV: Scout Fly Near Waterfall", + 196684: "RV: Scout Fly Behind Geologist", + 262220: "RV: Scout Fly Behind Fiery Boulder", + 65612: "RV: Scout Fly On Dock", + 327756: "RV: Scout Fly At Pontoon Bridge", + 393292: "RV: Scout Fly At Boggy Swamp Entrance" +} + +# Precursor Basin +locPB_scoutTable = { + 196665: "PB: Scout Fly Overlooking Entrance", + 393273: "PB: Scout Fly Near Mole Hole", + 131129: "PB: Scout Fly At Purple Ring Start", + 65593: "PB: Scout Fly Near Dark Eco Plant, Above", + 57: "PB: Scout Fly At Blue Ring Start", + 262201: "PB: Scout Fly Before Big Jump", + 327737: "PB: Scout Fly Near Dark Eco Plant, Below" +} + +# Lost Precursor City +locLPC_scoutTable = { + 262193: "LPC: Scout Fly First Room", + 131121: "LPC: Scout Fly Before Second Room", + 393265: "LPC: Scout Fly Second Room, Near Orb Vent", + 196657: "LPC: Scout Fly Second Room, On Path To Cell", + 49: "LPC: Scout Fly Second Room, Green Pipe", # Sunken Pipe Game, special cases. See `got-buzzer?` + 65585: "LPC: Scout Fly Second Room, Blue Pipe", # Sunken Pipe Game, special cases. See `got-buzzer?` + 327729: "LPC: Scout Fly Across Steam Vents" +} + +# Boggy Swamp +locBS_scoutTable = { + 43: "BS: Scout Fly Near Entrance", + 393259: "BS: Scout Fly Over First Jump Pad", + 65579: "BS: Scout Fly Over Second Jump Pad", + 262187: "BS: Scout Fly Across Black Swamp", + 327723: "BS: Scout Fly Overlooking Flut Flut", + 131115: "BS: Scout Fly On Flut Flut Platforms", + 196651: "BS: Scout Fly In Field Of Boxes" +} + +# Mountain Pass +locMP_scoutTable = { + 88: "MP: Scout Fly 1", + 65624: "MP: Scout Fly 2", + 131160: "MP: Scout Fly 3", + 196696: "MP: Scout Fly 4", + 262232: "MP: Scout Fly 5", + 327768: "MP: Scout Fly 6", + 393304: "MP: Scout Fly 7" +} + +# Volcanic Crater +locVC_scoutTable = { + 262221: "VC: Scout Fly In Miner's Cave", + 393293: "VC: Scout Fly Near Oracle", + 196685: "VC: Scout Fly On Stone Platforms", + 131149: "VC: Scout Fly Near Lava Tube", + 77: "VC: Scout Fly At Minecart Junction", + 65613: "VC: Scout Fly Near Spider Cave", + 327757: "VC: Scout Fly Near Mountain Pass" +} + +# Spider Cave +locSC_scoutTable = { + 327765: "SC: Scout Fly Near Dark Cave Entrance", + 262229: "SC: Scout Fly In Dark Cave", + 393301: "SC: Scout Fly Main Cave, Overlooking Entrance", + 196693: "SC: Scout Fly Main Cave, Near Dark Crystal", + 131157: "SC: Scout Fly Main Cave, Near Robot Cave Entrance", + 85: "SC: Scout Fly Robot Cave, At Bottom Level", + 65621: "SC: Scout Fly Robot Cave, At Top Level", +} + +# Snowy Mountain +locSM_scoutTable = { + 65: "SM: Scout Fly Near Entrance", + 327745: "SM: Scout Fly Near Frozen Box", + 65601: "SM: Scout Fly Near Yellow Eco Switch", + 131137: "SM: Scout Fly On Cliff near Flut Flut", + 393281: "SM: Scout Fly Under Bridge To Fort", + 196673: "SM: Scout Fly On Top Of Fort Tower", + 262209: "SM: Scout Fly On Top Of Fort" +} + +# Lava Tube +locLT_scoutTable = { + 90: "LT: Scout Fly 1", + 65626: "LT: Scout Fly 2", + 327770: "LT: Scout Fly 3", + 262234: "LT: Scout Fly 4", + 131162: "LT: Scout Fly 5", + 196698: "LT: Scout Fly 6", + 393306: "LT: Scout Fly 7" +} + +# Gol and Maias Citadel +locGMC_scoutTable = { + 91: "GMC: Scout Fly At Entrance", + 65627: "GMC: Scout Fly Main Room, Left of Robot", + 196699: "GMC: Scout Fly Main Room, Right of Robot", + 262235: "GMC: Scout Fly Before Jumping Lurkers", + 393307: "GMC: Scout Fly At Blast Furnace", + 131163: "GMC: Scout Fly At Launch Pad Room", + 327771: "GMC: Scout Fly Top Of Rotating Tower" +} diff --git a/worlds/jakanddaxter/locs/special_locations.py b/worlds/jakanddaxter/locs/special_locations.py new file mode 100644 index 000000000000..95081eb2e3e9 --- /dev/null +++ b/worlds/jakanddaxter/locs/special_locations.py @@ -0,0 +1,51 @@ +from ..game_id import jak1_id + +# These are special checks that the game normally does not track. They are not game entities and thus +# don't have game ID's. + +# Normally, for example, completing the fishing minigame is what gives you access to the +# fisherman's boat to get to Misty Island. The game treats completion of the fishing minigame as well as the +# power cell you receive as one and the same. The fisherman only gives you one item, a power cell. + +# We're significantly altering the game logic here to decouple these concepts. First, completing the fishing minigame +# now counts as 2 Location checks. Second, the fisherman should give you a power cell (a generic item) as well as +# the "keys" to his boat (a special item). It is the "keys" that we are defining in this file, and the respective +# Item representing those keys will be defined in Items.py. These aren't real in the sense that +# they have a model and texture, they are just the logical representation of the boat unlock. + +# We can use 2^11 to offset these from scout flies, just like we offset scout flies from power cells +# by 2^10. Even with the high-16 reminder bits, scout flies don't exceed an ID of (jak1_id + 1887). +special_offset = 2048 + + +# These helper functions do all the math required to get information about each +# special check and translate its ID between AP and OpenGOAL. +def to_ap_id(game_id: int) -> int: + if game_id >= jak1_id: + raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.") + return jak1_id + special_offset + game_id # Add the offsets and the orb Actor ID. + + +def to_game_id(ap_id: int) -> int: + if ap_id < jak1_id: + raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.") + return ap_id - jak1_id - special_offset # Reverse process, subtract the offsets. + + +# The ID's you see below correlate to each of their respective game-tasks, even though they are separate. +# This makes it easier for the new game logic to know what relates to what. I hope. God I hope. + +loc_specialTable = { + 5: "Fisherman's Boat", + 4: "Jungle Elevator", + 2: "Blue Eco Switch", + 17: "Flut Flut", + 33: "Warrior's Pontoons", + 105: "Snowy Mountain Gondola", + 60: "Yellow Eco Switch", + 63: "Snowy Fort Gate", + 71: "Freed The Blue Sage", + 72: "Freed The Red Sage", + 73: "Freed The Yellow Sage", + 70: "Freed The Green Sage", +} diff --git a/worlds/jakanddaxter/options.py b/worlds/jakanddaxter/options.py new file mode 100644 index 000000000000..d36303b0759e --- /dev/null +++ b/worlds/jakanddaxter/options.py @@ -0,0 +1,352 @@ +from dataclasses import dataclass +from functools import cached_property +from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle, OptionCounter, \ + AssembleOptions +from .items import trap_item_table + + +class readonly_classproperty: + """This decorator is used for getting friendly or unfriendly range_end values for options like FireCanyonCellCount + and CitizenOrbTradeAmount. We only need to provide a getter as we will only be setting a single int to one of two + values.""" + def __init__(self, getter): + self.getter = getter + + def __get__(self, instance, owner): + return self.getter(owner) + + +@readonly_classproperty +def determine_range_end(cls) -> int: + from . import JakAndDaxterWorld # Avoid circular imports. + friendly = JakAndDaxterWorld.settings.enforce_friendly_options + return cls.friendly_maximum if friendly else cls.absolute_maximum + + +class classproperty: + """This decorator (?) is used for getting and setting friendly or unfriendly option values for the Orbsanity + options.""" + def __init__(self, getter, setter): + self.getter = getter + self.setter = setter + + def __get__(self, obj, value): + return self.getter(obj) + + def __set__(self, obj, value): + self.setter(obj, value) + + +class AllowedChoiceMeta(AssembleOptions): + """This metaclass overrides AssembleOptions and provides inheriting classes a way to filter out "disallowed" values + by way of implementing get_disallowed_options. This function is used by Jak and Daxter to check host.yaml settings + without circular imports or breaking the settings API.""" + _name_lookup: dict[int, str] + _options: dict[str, int] + + def __new__(mcs, name, bases, attrs): + ret = super().__new__(mcs, name, bases, attrs) + ret._name_lookup = attrs["name_lookup"] + ret._options = attrs["options"] + return ret + + def set_name_lookup(cls, value : dict[int, str]): + cls._name_lookup = value + + def get_name_lookup(cls) -> dict[int, str]: + cls._name_lookup = {k: v for k, v in cls._name_lookup.items() if k not in cls.get_disallowed_options()} + return cls._name_lookup + + def set_options(cls, value: dict[str, int]): + cls._options = value + + def get_options(cls) -> dict[str, int]: + cls._options = {k: v for k, v in cls._options.items() if v not in cls.get_disallowed_options()} + return cls._options + + def get_disallowed_options(cls): + return {} + + name_lookup = classproperty(get_name_lookup, set_name_lookup) + options = classproperty(get_options, set_options) + + +class AllowedChoice(Choice, metaclass=AllowedChoiceMeta): + pass + + +class EnableMoveRandomizer(Toggle): + """Include movement options as items in the randomizer. Until you find his other moves, Jak is limited to + running, swimming, single-jumping, and shooting yellow eco through his goggles. + + This adds 11 items to the pool.""" + display_name = "Enable Move Randomizer" + + +class EnableOrbsanity(Choice): + """Include bundles of Precursor Orbs as checks. Every time you collect the chosen number of orbs, you will trigger + another check. + + Per Level: bundles are for each level in the game. + Global: bundles carry over level to level. + + This adds a number of Items and Locations to the pool inversely proportional to the size of the bundle. + For example, if your bundle size is 20 orbs, you will add 100 items to the pool. If your bundle size is 250 orbs, + you will add 8 items to the pool.""" + display_name = "Enable Orbsanity" + option_off = 0 + option_per_level = 1 + option_global = 2 + default = 0 + + +class GlobalOrbsanityBundleSize(AllowedChoice): + """The orb bundle size for Global Orbsanity. This only applies if "Enable Orbsanity" is set to "Global." + There are 2000 orbs in the game, so your bundle size must be a factor of 2000. + + This value is restricted to safe minimum and maximum values to ensure valid singleplayer games and + non-disruptive multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options + in host.yaml.""" + display_name = "Global Orbsanity Bundle Size" + option_1_orb = 1 + option_2_orbs = 2 + option_4_orbs = 4 + option_5_orbs = 5 + option_8_orbs = 8 + option_10_orbs = 10 + option_16_orbs = 16 + option_20_orbs = 20 + option_25_orbs = 25 + option_40_orbs = 40 + option_50_orbs = 50 + option_80_orbs = 80 + option_100_orbs = 100 + option_125_orbs = 125 + option_200_orbs = 200 + option_250_orbs = 250 + option_400_orbs = 400 + option_500_orbs = 500 + option_1000_orbs = 1000 + option_2000_orbs = 2000 + friendly_minimum = 10 + friendly_maximum = 200 + default = 20 + + @classmethod + def get_disallowed_options(cls) -> set[int]: + try: + from . import JakAndDaxterWorld + if JakAndDaxterWorld.settings.enforce_friendly_options: + return {cls.option_1_orb, + cls.option_2_orbs, + cls.option_4_orbs, + cls.option_5_orbs, + cls.option_8_orbs, + cls.option_250_orbs, + cls.option_400_orbs, + cls.option_500_orbs, + cls.option_1000_orbs, + cls.option_2000_orbs} + except ImportError: + pass + return set() + + +class PerLevelOrbsanityBundleSize(AllowedChoice): + """The orb bundle size for Per Level Orbsanity. This only applies if "Enable Orbsanity" is set to "Per Level." + There are 50, 150, or 200 orbs per level, so your bundle size must be a factor of 50. + + This value is restricted to safe minimum and maximum values to ensure valid singleplayer games and + non-disruptive multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options + in host.yaml.""" + display_name = "Per Level Orbsanity Bundle Size" + option_1_orb = 1 + option_2_orbs = 2 + option_5_orbs = 5 + option_10_orbs = 10 + option_25_orbs = 25 + option_50_orbs = 50 + friendly_minimum = 10 + default = 25 + + @classmethod + def get_disallowed_options(cls) -> set[int]: + try: + from . import JakAndDaxterWorld + if JakAndDaxterWorld.settings.enforce_friendly_options: + return {cls.option_1_orb, + cls.option_2_orbs, + cls.option_5_orbs} + except ImportError: + pass + return set() + + +class FireCanyonCellCount(Range): + """The number of power cells you need to cross Fire Canyon. This value is restricted to a safe maximum value to + ensure valid singleplayer games and non-disruptive multiplayer games, but the host can remove this restriction by + turning off enforce_friendly_options in host.yaml.""" + display_name = "Fire Canyon Cell Count" + friendly_maximum = 30 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 20 + + +class MountainPassCellCount(Range): + """The number of power cells you need to reach Klaww and cross Mountain Pass. This value is restricted to a safe + maximum value to ensure valid singleplayer games and non-disruptive multiplayer games, but the host can + remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Mountain Pass Cell Count" + friendly_maximum = 60 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 45 + + +class LavaTubeCellCount(Range): + """The number of power cells you need to cross Lava Tube. This value is restricted to a safe maximum value to + ensure valid singleplayer games and non-disruptive multiplayer games, but the host can remove this restriction by + turning off enforce_friendly_options in host.yaml.""" + display_name = "Lava Tube Cell Count" + friendly_maximum = 90 + absolute_maximum = 100 + range_start = 0 + range_end = determine_range_end + default = 72 + + +class EnableOrderedCellCounts(DefaultOnToggle): + """Reorder the Cell Count requirements for vehicle sections to be in ascending order. + + For example, if Fire Canyon Cell Count, Mountain Pass Cell Count, and Lava Tube Cell Count are 60, 30, and 40 + respectively, they will be reordered to 30, 40, and 60.""" + display_name = "Enable Ordered Cell Counts" + + +class RequirePunchForKlaww(DefaultOnToggle): + """Force the Punch move to come before Klaww. Disabling this setting may require Jak to fight Klaww + and Gol and Maia by shooting yellow eco through his goggles. This only applies if "Enable Move Randomizer" is ON.""" + display_name = "Require Punch For Klaww" + + +# 222 is the absolute maximum because there are 9 citizen trades and 2000 orbs to trade (2000/9 = 222). +class CitizenOrbTradeAmount(Range): + """The number of orbs you need to trade to citizens for a power cell (Mayor, Uncle, etc.). + + Along with Oracle Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000). + The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades). + + This value is restricted to a safe maximum value to ensure valid singleplayer games and non-disruptive + multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Citizen Orb Trade Amount" + friendly_maximum = 120 + absolute_maximum = 222 + range_start = 0 + range_end = determine_range_end + default = 90 + + +# 333 is the absolute maximum because there are 6 oracle trades and 2000 orbs to trade (2000/6 = 333). +class OracleOrbTradeAmount(Range): + """The number of orbs you need to trade to the Oracles for a power cell. + + Along with Citizen Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000). + The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades). + + This value is restricted to a safe maximum value to ensure valid singleplayer games and non-disruptive + multiplayer games, but the host can remove this restriction by turning off enforce_friendly_options in host.yaml.""" + display_name = "Oracle Orb Trade Amount" + friendly_maximum = 150 + absolute_maximum = 333 + range_start = 0 + range_end = determine_range_end + default = 120 + + +class FillerPowerCellsReplacedWithTraps(Range): + """ + The number of filler power cells that will be replaced with traps. This does not affect the number of progression + power cells. + + If this value is greater than the number of filler power cells, then they will all be replaced with traps. + """ + display_name = "Filler Power Cells Replaced With Traps" + range_start = 0 + range_end = 100 + default = 0 + + +class FillerOrbBundlesReplacedWithTraps(Range): + """ + The number of filler orb bundles that will be replaced with traps. This does not affect the number of progression + orb bundles. This only applies if "Enable Orbsanity" is set to "Per Level" or "Global." + + If this value is greater than the number of filler orb bundles, then they will all be replaced with traps. + """ + display_name = "Filler Orb Bundles Replaced With Traps" + range_start = 0 + range_end = 2000 + default = 0 + + +class TrapEffectDuration(Range): + """ + The length of time, in seconds, that a trap effect lasts. + """ + display_name = "Trap Effect Duration" + range_start = 5 + range_end = 60 + default = 30 + + +class TrapWeights(OptionCounter): + """ + The list of traps and corresponding weights that will be randomly added to the item pool. A trap with weight 10 is + twice as likely to appear as a trap with weight 5. Set a weight to 0 to prevent that trap from appearing altogether. + If all weights are 0, no traps are created, overriding the values of "Filler * Replaced With Traps." + """ + display_name = "Trap Weights" + min = 0 + default = {trap: 1 for trap in trap_item_table.values()} + valid_keys = sorted({trap for trap in trap_item_table.values()}) + + @cached_property + def weights_pair(self) -> tuple[list[str], list[int]]: + return list(self.value.keys()), list(self.value.values()) + + +class CompletionCondition(Choice): + """Set the goal for completing the game.""" + display_name = "Completion Condition" + option_cross_fire_canyon = 69 + option_cross_mountain_pass = 87 + option_cross_lava_tube = 89 + # option_defeat_dark_eco_plant = 6 + option_defeat_klaww = 86 + option_defeat_gol_and_maia = 112 + option_open_100_cell_door = 116 + default = 112 + + +@dataclass +class JakAndDaxterOptions(PerGameCommonOptions): + enable_move_randomizer: EnableMoveRandomizer + enable_orbsanity: EnableOrbsanity + global_orbsanity_bundle_size: GlobalOrbsanityBundleSize + level_orbsanity_bundle_size: PerLevelOrbsanityBundleSize + fire_canyon_cell_count: FireCanyonCellCount + mountain_pass_cell_count: MountainPassCellCount + lava_tube_cell_count: LavaTubeCellCount + enable_ordered_cell_counts: EnableOrderedCellCounts + require_punch_for_klaww: RequirePunchForKlaww + citizen_orb_trade_amount: CitizenOrbTradeAmount + oracle_orb_trade_amount: OracleOrbTradeAmount + filler_power_cells_replaced_with_traps: FillerPowerCellsReplacedWithTraps + filler_orb_bundles_replaced_with_traps: FillerOrbBundlesReplacedWithTraps + trap_effect_duration: TrapEffectDuration + trap_weights: TrapWeights + jak_completion_condition: CompletionCondition + start_inventory_from_pool: StartInventoryPool diff --git a/worlds/jakanddaxter/regions.py b/worlds/jakanddaxter/regions.py new file mode 100644 index 000000000000..87186c3a0226 --- /dev/null +++ b/worlds/jakanddaxter/regions.py @@ -0,0 +1,132 @@ +import typing +from Options import OptionError +from .items import item_table +from .options import EnableOrbsanity, CompletionCondition +from .rules import can_reach_orbs_global +from .locs import cell_locations as cells, scout_locations as scouts +from .regs import (geyser_rock_regions as geyser_rock, + sandover_village_regions as sandover_village, + forbidden_jungle_regions as forbidden_jungle, + sentinel_beach_regions as sentinel_beach, + misty_island_regions as misty_island, + fire_canyon_regions as fire_canyon, + rock_village_regions as rock_village, + precursor_basin_regions as precursor_basin, + lost_precursor_city_regions as lost_precursor_city, + boggy_swamp_regions as boggy_swamp, + mountain_pass_regions as mountain_pass, + volcanic_crater_regions as volcanic_crater, + spider_cave_regions as spider_cave, + snowy_mountain_regions as snowy_mountain, + lava_tube_regions as lava_tube, + gol_and_maias_citadel_regions as gol_and_maias_citadel) +from .regs.region_base import JakAndDaxterRegion + +if typing.TYPE_CHECKING: + from . import JakAndDaxterWorld + + +def create_regions(world: "JakAndDaxterWorld"): + multiworld = world.multiworld + options = world.options + player = world.player + + # Always start with Menu. + menu = JakAndDaxterRegion("Menu", player, multiworld) + multiworld.regions.append(menu) + + # Build the special "Free 7 Scout Flies" Region. This is a virtual region always accessible to Menu. + # The Locations within are automatically checked when you receive the 7th scout fly for the corresponding cell. + free7 = JakAndDaxterRegion("'Free 7 Scout Flies' Power Cells", player, multiworld) + free7.add_cell_locations(cells.loc7SF_cellTable.keys()) + for scout_fly_cell in free7.locations: + + # Translate from Cell AP ID to Scout AP ID using game ID as an intermediary. + scout_fly_id = scouts.to_ap_id(cells.to_game_id(typing.cast(int, scout_fly_cell.address))) + scout_fly_cell.access_rule = lambda state, flies=scout_fly_id: state.has(item_table[flies], player, 7) + multiworld.regions.append(free7) + menu.connect(free7) + + # If Global Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Menu. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_global: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld) + + bundle_count = 2000 // world.orb_bundle_size + for bundle_index in range(bundle_count): + + # Unlike Per-Level Orbsanity, Global Orbsanity Locations always have a level_index of 16. + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(16, + bundle_index, + access_rule=lambda state, orb_amount=amount: + can_reach_orbs_global(state, player, world, orb_amount)) + multiworld.regions.append(orbs) + menu.connect(orbs) + + # Build all regions. Include their intra-connecting Rules, their Locations, and their Location access rules. + gr = geyser_rock.build_regions("Geyser Rock", world) + sv = sandover_village.build_regions("Sandover Village", world) + fj, fjp = forbidden_jungle.build_regions("Forbidden Jungle", world) + sb = sentinel_beach.build_regions("Sentinel Beach", world) + mi = misty_island.build_regions("Misty Island", world) + fc = fire_canyon.build_regions("Fire Canyon", world) + rv, rvp, rvc = rock_village.build_regions("Rock Village", world) + pb = precursor_basin.build_regions("Precursor Basin", world) + lpc = lost_precursor_city.build_regions("Lost Precursor City", world) + bs = boggy_swamp.build_regions("Boggy Swamp", world) + mp, mpr = mountain_pass.build_regions("Mountain Pass", world) + vc = volcanic_crater.build_regions("Volcanic Crater", world) + sc = spider_cave.build_regions("Spider Cave", world) + sm = snowy_mountain.build_regions("Snowy Mountain", world) + lt = lava_tube.build_regions("Lava Tube", world) + gmc, fb, fd = gol_and_maias_citadel.build_regions("Gol and Maia's Citadel", world) + + # Configurable counts of cells for connector levels. + fc_count = options.fire_canyon_cell_count.value + mp_count = options.mountain_pass_cell_count.value + lt_count = options.lava_tube_cell_count.value + + # Define the interconnecting rules. + menu.connect(gr) + gr.connect(sv) # Geyser Rock modified to let you leave at any time. + sv.connect(fj) + sv.connect(sb) + sv.connect(mi, rule=lambda state: state.has("Fisherman's Boat", player)) + sv.connect(fc, rule=lambda state: state.has("Power Cell", player, fc_count)) # Normally 20. + fc.connect(rv) + rv.connect(pb) + rv.connect(lpc) + rvp.connect(bs) # rv->rvp/rvc connections defined internally by RockVillageRegions. + rvc.connect(mp, rule=lambda state: state.has("Power Cell", player, mp_count)) # Normally 45. + mpr.connect(vc) # mp->mpr connection defined internally by MountainPassRegions. + vc.connect(sc) + vc.connect(sm, rule=lambda state: state.has("Snowy Mountain Gondola", player)) + vc.connect(lt, rule=lambda state: state.has("Power Cell", player, lt_count)) # Normally 72. + lt.connect(gmc) # gmc->fb connection defined internally by GolAndMaiasCitadelRegions. + + # Set the completion condition. + if options.jak_completion_condition == CompletionCondition.option_cross_fire_canyon: + multiworld.completion_condition[player] = lambda state: state.can_reach(rv, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_cross_mountain_pass: + multiworld.completion_condition[player] = lambda state: state.can_reach(vc, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_cross_lava_tube: + multiworld.completion_condition[player] = lambda state: state.can_reach(gmc, "Region", player) + + # elif options.jak_completion_condition == CompletionCondition.option_defeat_dark_eco_plant: + # multiworld.completion_condition[player] = lambda state: state.can_reach(fjp, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_defeat_klaww: + multiworld.completion_condition[player] = lambda state: state.can_reach(mp, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_defeat_gol_and_maia: + multiworld.completion_condition[player] = lambda state: state.can_reach(fb, "Region", player) + + elif options.jak_completion_condition == CompletionCondition.option_open_100_cell_door: + multiworld.completion_condition[player] = lambda state: state.can_reach(fd, "Region", player) + + else: + raise OptionError(f"{world.player_name}: Unknown completion goal ID " + f"({options.jak_completion_condition.value}).") diff --git a/worlds/jakanddaxter/regs/__init__.py b/worlds/jakanddaxter/regs/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/regs/boggy_swamp_regions.py b/worlds/jakanddaxter/regs/boggy_swamp_regions.py new file mode 100644 index 000000000000..a548f2e41069 --- /dev/null +++ b/worlds/jakanddaxter/regs/boggy_swamp_regions.py @@ -0,0 +1,174 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # This level is full of short-medium gaps that cannot be crossed by single jump alone. + # These helper functions list out the moves that can cross all these gaps (painting with a broad brush but...) + def can_jump_farther(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + def can_jump_higher(state: CollectionState, p: int) -> bool: + return (state.has("Double Jump", p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Crouch", "Crouch Uppercut"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + # Orb crates and fly box in this area can be gotten with yellow eco and goggles. + # Start with the first yellow eco cluster near first_bats and work your way backward toward the entrance. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 23) + main_area.add_fly_locations([43]) + + # Includes 4 orbs collectable with the blue eco vent. + first_bats = JakAndDaxterRegion("First Bats Area", player, multiworld, level_name, 4) + + first_jump_pad = JakAndDaxterRegion("First Jump Pad", player, multiworld, level_name, 0) + first_jump_pad.add_fly_locations([393259]) + + # The tethers in this level are all out of order... a casual playthrough has the following order for the cell ID's: + # 42, 39, 40, 41. So that is the order we're calling "first, second, third, fourth". + + # First tether cell is collectable with yellow eco and goggles. + first_tether = JakAndDaxterRegion("First Tether", player, multiworld, level_name, 7) + first_tether.add_cell_locations([42]) + + # This rat colony has 3 orbs on top of it, requires special movement. + first_tether_rat_colony = JakAndDaxterRegion("First Tether Rat Colony", player, multiworld, level_name, 3) + + # If quick enough, combat not required. + second_jump_pad = JakAndDaxterRegion("Second Jump Pad", player, multiworld, level_name, 0) + second_jump_pad.add_fly_locations([65579]) + + first_pole_course = JakAndDaxterRegion("First Pole Course", player, multiworld, level_name, 28) + + # You can break this tether with a yellow eco vent and goggles, + # but you can't reach the platform unless you can jump high. + second_tether = JakAndDaxterRegion("Second Tether", player, multiworld, level_name, 0) + second_tether.add_cell_locations([39], access_rule=lambda state: can_jump_higher(state, player)) + + # Fly and orbs are collectable with nearby blue eco cluster. + second_bats = JakAndDaxterRegion("Second Bats Area", player, multiworld, level_name, 27) + second_bats.add_fly_locations([262187], access_rule=lambda state: can_jump_farther(state, player)) + + third_jump_pad = JakAndDaxterRegion("Third Jump Pad (Arena)", player, multiworld, level_name, 0) + third_jump_pad.add_cell_locations([38], access_rule=lambda state: can_fight(state, player)) + + # The platform for the third tether might look high, but you can get a boost from the yellow eco vent. + fourth_jump_pad = JakAndDaxterRegion("Fourth Jump Pad (Third Tether)", player, multiworld, level_name, 9) + fourth_jump_pad.add_cell_locations([40]) + + # Orbs collectable here with yellow eco and goggles. + flut_flut_pad = JakAndDaxterRegion("Flut Flut Pad", player, multiworld, level_name, 36) + + flut_flut_course = JakAndDaxterRegion("Flut Flut Course", player, multiworld, level_name, 23) + flut_flut_course.add_cell_locations([37]) + flut_flut_course.add_fly_locations([327723, 131115]) + + # Includes some orbs on the way to the cabin, blue+yellow eco to collect. + farthy_snacks = JakAndDaxterRegion("Farthy's Snacks", player, multiworld, level_name, 7) + farthy_snacks.add_cell_locations([36]) + + # Scout fly in this field can be broken with yellow eco. + box_field = JakAndDaxterRegion("Field of Boxes", player, multiworld, level_name, 10) + box_field.add_fly_locations([196651]) + + last_tar_pit = JakAndDaxterRegion("Last Tar Pit", player, multiworld, level_name, 12) + + fourth_tether = JakAndDaxterRegion("Fourth Tether", player, multiworld, level_name, 11) + fourth_tether.add_cell_locations([41], access_rule=lambda state: can_jump_higher(state, player)) + + main_area.connect(first_bats, rule=lambda state: can_jump_farther(state, player)) + + first_bats.connect(main_area) + first_bats.connect(first_jump_pad) + first_bats.connect(first_tether) + + first_jump_pad.connect(first_bats) + + first_tether.connect(first_bats) + first_tether.connect(first_tether_rat_colony, rule=lambda state: + (state.has_all(("Roll", "Roll Jump"), player) + or state.has_all(("Double Jump", "Jump Kick"), player))) + first_tether.connect(second_jump_pad) + first_tether.connect(first_pole_course) + + first_tether_rat_colony.connect(first_tether) + + second_jump_pad.connect(first_tether) + + first_pole_course.connect(first_tether) + first_pole_course.connect(second_tether) + + second_tether.connect(first_pole_course, rule=lambda state: can_jump_higher(state, player)) + second_tether.connect(second_bats) + + second_bats.connect(second_tether) + second_bats.connect(third_jump_pad) + second_bats.connect(fourth_jump_pad) + second_bats.connect(flut_flut_pad) + + third_jump_pad.connect(second_bats) + fourth_jump_pad.connect(second_bats) + + flut_flut_pad.connect(second_bats) + flut_flut_pad.connect(flut_flut_course, rule=lambda state: state.has("Flut Flut", player)) # Naturally. + flut_flut_pad.connect(farthy_snacks) + + flut_flut_course.connect(flut_flut_pad) + + farthy_snacks.connect(flut_flut_pad) + farthy_snacks.connect(box_field, rule=lambda state: can_jump_higher(state, player)) + + box_field.connect(farthy_snacks, rule=lambda state: can_jump_higher(state, player)) + box_field.connect(last_tar_pit, rule=lambda state: can_jump_farther(state, player)) + + last_tar_pit.connect(box_field, rule=lambda state: can_jump_farther(state, player)) + last_tar_pit.connect(fourth_tether, rule=lambda state: can_jump_farther(state, player)) + + fourth_tether.connect(last_tar_pit, rule=lambda state: can_jump_farther(state, player)) + fourth_tether.connect(main_area) # Fall down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(first_bats) + world.level_to_regions[level_name].append(first_jump_pad) + world.level_to_regions[level_name].append(first_tether) + world.level_to_regions[level_name].append(first_tether_rat_colony) + world.level_to_regions[level_name].append(second_jump_pad) + world.level_to_regions[level_name].append(first_pole_course) + world.level_to_regions[level_name].append(second_tether) + world.level_to_regions[level_name].append(second_bats) + world.level_to_regions[level_name].append(third_jump_pad) + world.level_to_regions[level_name].append(fourth_jump_pad) + world.level_to_regions[level_name].append(flut_flut_pad) + world.level_to_regions[level_name].append(flut_flut_course) + world.level_to_regions[level_name].append(farthy_snacks) + world.level_to_regions[level_name].append(box_field) + world.level_to_regions[level_name].append(last_tar_pit) + world.level_to_regions[level_name].append(fourth_tether) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(8, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/fire_canyon_regions.py b/worlds/jakanddaxter/regs/fire_canyon_regions.py new file mode 100644 index 000000000000..9ce0f5dae24e --- /dev/null +++ b/worlds/jakanddaxter/regs/fire_canyon_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locFC_cellTable.keys()) + main_area.add_fly_locations(scouts.locFC_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(5, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/forbidden_jungle_regions.py b/worlds/jakanddaxter/regs/forbidden_jungle_regions.py new file mode 100644 index 000000000000..601a802e55d2 --- /dev/null +++ b/worlds/jakanddaxter/regs/forbidden_jungle_regions.py @@ -0,0 +1,103 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 25) + + # You can get this scout fly by running from the blue eco vent across the temple bridge, + # falling onto the river, collecting the 3 blue clusters, using the jump pad, and running straight to the box. + main_area.add_fly_locations([393223]) + + lurker_machine = JakAndDaxterRegion("Lurker Machine", player, multiworld, level_name, 5) + lurker_machine.add_cell_locations([3], access_rule=lambda state: can_fight(state, player)) + + # This cell and this scout fly can both be gotten with the blue eco clusters near the jump pad. + lurker_machine.add_cell_locations([9]) + lurker_machine.add_fly_locations([131079]) + + river = JakAndDaxterRegion("River", player, multiworld, level_name, 42) + + # All of these can be gotten with blue eco, hitting the dark eco boxes, or by running. + river.add_cell_locations([5, 8]) + river.add_fly_locations([7, 196615]) + river.add_special_locations([5]) + river.add_cache_locations([10369]) + + temple_exit = JakAndDaxterRegion("Temple Exit", player, multiworld, level_name, 12) + + # This fly is too far from accessible blue eco sources. + temple_exit.add_fly_locations([262151], access_rule=lambda state: can_free_scout_flies(state, player)) + + temple_exterior = JakAndDaxterRegion("Temple Exterior", player, multiworld, level_name, 10) + + # All of these can be gotten with blue eco and running. + temple_exterior.add_cell_locations([4]) + temple_exterior.add_fly_locations([327687, 65543]) + temple_exterior.add_special_locations([4]) + + temple_int_pre_blue = JakAndDaxterRegion("Temple Interior (Pre Blue Eco)", player, multiworld, level_name, 17) + temple_int_pre_blue.add_cell_locations([2]) + temple_int_pre_blue.add_special_locations([2]) + + temple_int_post_blue = JakAndDaxterRegion("Temple Interior (Post Blue Eco)", player, multiworld, level_name, 39) + temple_int_post_blue.add_cell_locations([6], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(lurker_machine) # Run and jump (tree stump platforms). + main_area.connect(river) # Jump down. + main_area.connect(temple_exit) # Run and jump (bridges). + + lurker_machine.connect(main_area) # Jump down. + lurker_machine.connect(river) # Jump down. + lurker_machine.connect(temple_exterior) # Jump down (ledge). + + river.connect(main_area) # Jump up (ledges near fisherman). + river.connect(lurker_machine) # Jump pad (aim toward machine). + river.connect(temple_exit) # Run and jump (trampolines). + river.connect(temple_exterior) # Jump pad (aim toward temple door). + + temple_exit.connect(main_area) # Run and jump (bridges). + temple_exit.connect(river) # Jump down. + temple_exit.connect(temple_exterior) # Run and jump (bridges, dodge spikes). + + # Requires Jungle Elevator. + temple_exterior.connect(temple_int_pre_blue, rule=lambda state: state.has("Jungle Elevator", player)) + + # Requires Blue Eco Switch. + temple_int_pre_blue.connect(temple_int_post_blue, rule=lambda state: state.has("Blue Eco Switch", player)) + + # Requires defeating the plant boss (combat). + temple_int_post_blue.connect(temple_exit, rule=lambda state: can_fight(state, player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(lurker_machine) + world.level_to_regions[level_name].append(river) + world.level_to_regions[level_name].append(temple_exit) + world.level_to_regions[level_name].append(temple_exterior) + world.level_to_regions[level_name].append(temple_int_pre_blue) + world.level_to_regions[level_name].append(temple_int_post_blue) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(3, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area, temple_int_post_blue diff --git a/worlds/jakanddaxter/regs/geyser_rock_regions.py b/worlds/jakanddaxter/regs/geyser_rock_regions.py new file mode 100644 index 000000000000..10783067c358 --- /dev/null +++ b/worlds/jakanddaxter/regs/geyser_rock_regions.py @@ -0,0 +1,48 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 48) + main_area.add_cell_locations([92, 93]) + main_area.add_fly_locations(scouts.locGR_scoutTable.keys()) # All Flies here are accessible with blue eco. + + # The last 2 orbs are barely gettable with the blue eco vent, but it's pushing accessibility. So I moved them here. + cliff = JakAndDaxterRegion("Cliff", player, multiworld, level_name, 2) + cliff.add_cell_locations([94]) + + main_area.connect(cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut"), player)) + + cliff.connect(main_area) # Jump down or ride blue eco elevator. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(cliff) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(0, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py b/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py new file mode 100644 index 000000000000..83d2d51f1d8d --- /dev/null +++ b/worlds/jakanddaxter/regs/gol_and_maias_citadel_regions.py @@ -0,0 +1,137 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity, CompletionCondition +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +# God help me... here we go. +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion | None, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This level is full of short-medium gaps that cannot be crossed by single jump alone. + # These helper functions list out the moves that can cross all these gaps (painting with a broad brush but...) + def can_jump_farther(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + def can_triple_jump(state: CollectionState, p: int) -> bool: + return state.has_all(("Double Jump", "Jump Kick"), p) + + def can_jump_stairs(state: CollectionState, p: int) -> bool: + return (state.has("Double Jump", p) + or state.has("Jump Dive", p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Crouch", "Crouch Uppercut"), p)) + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_fly_locations([91], access_rule=lambda state: can_free_scout_flies(state, player)) + + robot_scaffolding = JakAndDaxterRegion("Scaffolding Around Robot", player, multiworld, level_name, 8) + robot_scaffolding.add_fly_locations([196699], access_rule=lambda state: can_free_scout_flies(state, player)) + + jump_pad_room = JakAndDaxterRegion("Jump Pad Chamber", player, multiworld, level_name, 88) + jump_pad_room.add_cell_locations([73], access_rule=lambda state: can_fight(state, player)) + jump_pad_room.add_special_locations([73], access_rule=lambda state: can_fight(state, player)) + jump_pad_room.add_fly_locations([131163]) # Blue eco vent is right next to it. + jump_pad_room.add_fly_locations([65627], access_rule=lambda state: + can_free_scout_flies(state, player) and can_jump_farther(state, player)) + jump_pad_room.add_cache_locations([24039, 24040]) # First, blue eco vent, second, blue eco cluster near sage. + + blast_furnace = JakAndDaxterRegion("Blast Furnace", player, multiworld, level_name, 39) + blast_furnace.add_cell_locations([71], access_rule=lambda state: can_fight(state, player)) + blast_furnace.add_special_locations([71], access_rule=lambda state: can_fight(state, player)) + blast_furnace.add_fly_locations([393307]) # Blue eco vent nearby. + blast_furnace.add_cache_locations([24038]) # Blue eco cluster near sage. + + bunny_room = JakAndDaxterRegion("Bunny Chamber", player, multiworld, level_name, 45) + bunny_room.add_cell_locations([72], access_rule=lambda state: can_fight(state, player)) + bunny_room.add_special_locations([72], access_rule=lambda state: can_fight(state, player)) + bunny_room.add_fly_locations([262235], access_rule=lambda state: can_free_scout_flies(state, player)) + + rotating_tower = JakAndDaxterRegion("Rotating Tower", player, multiworld, level_name, 20) + rotating_tower.add_cell_locations([70], access_rule=lambda state: can_fight(state, player)) + rotating_tower.add_special_locations([70], access_rule=lambda state: can_fight(state, player)) + rotating_tower.add_fly_locations([327771], access_rule=lambda state: can_free_scout_flies(state, player)) + + final_boss = JakAndDaxterRegion("Final Boss", player, multiworld, level_name, 0) + + # Jump Dive required for a lot of buttons, prepare yourself. + main_area.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) or state.has_all(("Roll", "Roll Jump"), player)) + main_area.connect(jump_pad_room) + + robot_scaffolding.connect(main_area, rule=lambda state: state.has("Jump Dive", player)) + robot_scaffolding.connect(blast_furnace, rule=lambda state: + state.has("Jump Dive", player) + and can_jump_farther(state, player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + robot_scaffolding.connect(bunny_room, rule=lambda state: + state.has("Jump Dive", player) + and can_jump_farther(state, player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + jump_pad_room.connect(main_area) + jump_pad_room.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) + and (can_triple_jump(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + blast_furnace.connect(robot_scaffolding) # Blue eco elevator takes you right back. + + bunny_room.connect(robot_scaffolding, rule=lambda state: + state.has("Jump Dive", player) + and (can_jump_farther(state, player) or state.has_all(("Roll", "Roll Jump"), player))) + + # Final climb. + robot_scaffolding.connect(rotating_tower, rule=lambda state: + can_jump_stairs(state, player) + and state.has_all(("Freed The Blue Sage", + "Freed The Red Sage", + "Freed The Yellow Sage"), player)) + + rotating_tower.connect(main_area) # Take stairs back down. + + # Final elevator. Need to break boxes at summit to get blue eco for platform. + rotating_tower.connect(final_boss, rule=lambda state: + can_fight(state, player) + and state.has("Freed The Green Sage", player)) + + final_boss.connect(rotating_tower) # Take elevator back down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(robot_scaffolding) + world.level_to_regions[level_name].append(jump_pad_room) + world.level_to_regions[level_name].append(blast_furnace) + world.level_to_regions[level_name].append(bunny_room) + world.level_to_regions[level_name].append(rotating_tower) + world.level_to_regions[level_name].append(final_boss) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(15, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Final door. Need 100 power cells. + if options.jak_completion_condition == CompletionCondition.option_open_100_cell_door: + final_door = JakAndDaxterRegion("Final Door", player, multiworld, level_name, 0) + final_boss.connect(final_door, rule=lambda state: state.has("Power Cell", player, 100)) + + world.level_to_regions[level_name].append(final_door) + + return main_area, final_boss, final_door + else: + return main_area, final_boss, None diff --git a/worlds/jakanddaxter/regs/lava_tube_regions.py b/worlds/jakanddaxter/regs/lava_tube_regions.py new file mode 100644 index 000000000000..c3a4c5b24d3f --- /dev/null +++ b/worlds/jakanddaxter/regs/lava_tube_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locLT_cellTable.keys()) + main_area.add_fly_locations(scouts.locLT_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(14, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/lost_precursor_city_regions.py b/worlds/jakanddaxter/regs/lost_precursor_city_regions.py new file mode 100644 index 000000000000..f4a2ed6b5190 --- /dev/null +++ b/worlds/jakanddaxter/regs/lost_precursor_city_regions.py @@ -0,0 +1,155 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # Just the starting area. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 4) + + first_room_upper = JakAndDaxterRegion("First Chamber (Upper)", player, multiworld, level_name, 21) + + first_room_lower = JakAndDaxterRegion("First Chamber (Lower)", player, multiworld, level_name, 0) + first_room_lower.add_fly_locations([262193], access_rule=lambda state: can_free_scout_flies(state, player)) + + first_room_orb_cache = JakAndDaxterRegion("First Chamber Orb Cache", player, multiworld, level_name, 22) + + # Need jump dive to activate button, double jump to reach blue eco to unlock cache. + first_room_orb_cache.add_cache_locations([14507], access_rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + + first_hallway = JakAndDaxterRegion("First Hallway", player, multiworld, level_name, 10) + first_hallway.add_fly_locations([131121], access_rule=lambda state: can_free_scout_flies(state, player)) + + # This entire room is accessible with floating platforms and single jump. + second_room = JakAndDaxterRegion("Second Chamber", player, multiworld, level_name, 28) + + # These items can only be gotten with jump dive to activate a button. + second_room.add_cell_locations([45], access_rule=lambda state: state.has("Jump Dive", player)) + second_room.add_fly_locations([49, 65585], access_rule=lambda state: state.has("Jump Dive", player)) + + # This is the scout fly on the way to the pipe cell, requires normal breaking moves. + second_room.add_fly_locations([196657], access_rule=lambda state: can_free_scout_flies(state, player)) + + # This orb vent and scout fly are right next to each other, can be gotten with blue eco and the floating platforms. + second_room.add_fly_locations([393265]) + second_room.add_cache_locations([14838]) + + # Named after the cell, includes the armored lurker room. + center_complex = JakAndDaxterRegion("Center of the Complex", player, multiworld, level_name, 17) + center_complex.add_cell_locations([51]) + + color_platforms = JakAndDaxterRegion("Color Platforms", player, multiworld, level_name, 6) + color_platforms.add_cell_locations([44], access_rule=lambda state: can_fight(state, player)) + + quick_platforms = JakAndDaxterRegion("Quick Platforms", player, multiworld, level_name, 3) + + # Jump dive to activate button. + quick_platforms.add_cell_locations([48], access_rule=lambda state: state.has("Jump Dive", player)) + + first_slide = JakAndDaxterRegion("First Slide", player, multiworld, level_name, 22) + + # Raised chamber room, includes vent room with scout fly prior to second slide. + capsule_room = JakAndDaxterRegion("Capsule Chamber", player, multiworld, level_name, 6) + + # Use jump dive to activate button inside the capsule. Blue eco vent can ready the chamber and get the scout fly. + capsule_room.add_cell_locations([47], access_rule=lambda state: + state.has("Jump Dive", player) + and (state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player))) + capsule_room.add_fly_locations([327729]) + + # You can slide to the bottom of the city, but if you spawn down there, you have no momentum from the slide. + # So you need some kind of jump to reach this cell. + second_slide = JakAndDaxterRegion("Second Slide", player, multiworld, level_name, 31) + second_slide.add_cell_locations([46], access_rule=lambda state: + state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player)) + + # If you can enter the helix room, you can jump or fight your way to the top. But you need some kind of movement + # to enter it in the first place. + helix_room = JakAndDaxterRegion("Helix Chamber", player, multiworld, level_name, 30) + helix_room.add_cell_locations([50], access_rule=lambda state: + state.has("Double Jump", player) + or can_fight(state, player)) + + main_area.connect(first_room_upper) # Run. + + first_room_upper.connect(main_area) # Run. + first_room_upper.connect(first_hallway) # Run and jump (floating platforms). + first_room_upper.connect(first_room_lower) # Run and jump down. + + first_room_lower.connect(first_room_upper) # Run and jump (floating platforms). + + # Needs some movement to reach these orbs and orb cache. + first_room_lower.connect(first_room_orb_cache, rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + first_room_orb_cache.connect(first_room_lower, rule=lambda state: + state.has_all(("Jump Dive", "Double Jump"), player)) + + first_hallway.connect(first_room_upper) # Run and jump down. + first_hallway.connect(second_room) # Run and jump (floating platforms). + + second_room.connect(first_hallway) # Run and jump. + second_room.connect(center_complex) # Run and jump down. + + center_complex.connect(second_room) # Run and jump (swim). + center_complex.connect(color_platforms) # Run and jump (swim). + center_complex.connect(quick_platforms) # Run and jump (swim). + + color_platforms.connect(center_complex) # Run and jump (swim). + + quick_platforms.connect(center_complex) # Run and jump (swim). + quick_platforms.connect(first_slide) # Slide. + + first_slide.connect(capsule_room) # Slide. + + capsule_room.connect(second_slide) # Slide. + capsule_room.connect(main_area, rule=lambda state: # Chamber goes back to surface. + state.has("Jump Dive", player)) # (Assume one-way for sanity.) + + second_slide.connect(helix_room, rule=lambda state: # As stated above, you need to jump + state.has_any(("Double Jump", "Jump Kick"), player) # across the dark eco pool before + or state.has_all(("Punch", "Punch Uppercut"), player)) # you can climb the helix room. + + helix_room.connect(quick_platforms, rule=lambda state: # Escape to get back to here. + state.has("Double Jump", player) # Capsule is a convenient exit to the level. + or can_fight(state, player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(first_room_upper) + world.level_to_regions[level_name].append(first_room_lower) + world.level_to_regions[level_name].append(first_room_orb_cache) + world.level_to_regions[level_name].append(first_hallway) + world.level_to_regions[level_name].append(second_room) + world.level_to_regions[level_name].append(center_complex) + world.level_to_regions[level_name].append(color_platforms) + world.level_to_regions[level_name].append(quick_platforms) + world.level_to_regions[level_name].append(first_slide) + world.level_to_regions[level_name].append(capsule_room) + world.level_to_regions[level_name].append(second_slide) + world.level_to_regions[level_name].append(helix_room) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(7, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/misty_island_regions.py b/worlds/jakanddaxter/regs/misty_island_regions.py new file mode 100644 index 000000000000..a6ae6122476b --- /dev/null +++ b/worlds/jakanddaxter/regs/misty_island_regions.py @@ -0,0 +1,131 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 9) + + muse_course = JakAndDaxterRegion("Muse Course", player, multiworld, level_name, 21) + muse_course.add_cell_locations([23]) + muse_course.add_fly_locations([327708], access_rule=lambda state: can_free_scout_flies(state, player)) + + zoomer = JakAndDaxterRegion("Zoomer", player, multiworld, level_name, 32) + zoomer.add_cell_locations([27, 29]) + zoomer.add_fly_locations([393244]) + + ship = JakAndDaxterRegion("Ship", player, multiworld, level_name, 10) + ship.add_cell_locations([24]) + ship.add_fly_locations([131100], access_rule=lambda state: can_free_scout_flies(state, player)) + + far_side = JakAndDaxterRegion("Far Side", player, multiworld, level_name, 16) + + # In order to even reach this fly, you must use the seesaw or crouch jump. + far_side_cliff = JakAndDaxterRegion("Far Side Cliff", player, multiworld, level_name, 5) + far_side_cliff.add_fly_locations([28], access_rule=lambda state: can_free_scout_flies(state, player)) + + # To carry the blue eco fast enough to open this cache, you need to break the bone bridges along the way. + far_side_cache = JakAndDaxterRegion("Far Side Orb Cache", player, multiworld, level_name, 15) + far_side_cache.add_cache_locations([11072], access_rule=lambda state: can_fight(state, player)) + + barrel_course = JakAndDaxterRegion("Barrel Course", player, multiworld, level_name, 10) + barrel_course.add_fly_locations([196636], access_rule=lambda state: can_free_scout_flies(state, player)) + + # 14 orbs for the boxes you can only break with the cannon. + cannon = JakAndDaxterRegion("Cannon", player, multiworld, level_name, 14) + cannon.add_cell_locations([26], access_rule=lambda state: can_fight(state, player)) + + upper_approach = JakAndDaxterRegion("Upper Arena Approach", player, multiworld, level_name, 6) + upper_approach.add_fly_locations([65564, 262172], access_rule=lambda state: + can_free_scout_flies(state, player)) + + lower_approach = JakAndDaxterRegion("Lower Arena Approach", player, multiworld, level_name, 7) + lower_approach.add_cell_locations([30]) + + arena = JakAndDaxterRegion("Arena", player, multiworld, level_name, 5) + arena.add_cell_locations([25], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(muse_course) # TODO - What do you need to chase the muse the whole way around? + main_area.connect(zoomer) # Run and jump down. + main_area.connect(ship) # Run and jump. + main_area.connect(lower_approach) # Run and jump. + + # Need to break the bone bridge to access. + main_area.connect(upper_approach, rule=lambda state: can_fight(state, player)) + + muse_course.connect(main_area) # Run and jump down. + + # The zoomer pad is low enough that it requires Crouch Jump specifically. + zoomer.connect(main_area, rule=lambda state: state.has_all(("Crouch", "Crouch Jump"), player)) + + ship.connect(main_area) # Run and jump down. + ship.connect(far_side) # Run and jump down. + ship.connect(barrel_course) # Run and jump (dodge barrels). + + far_side.connect(ship) # Run and jump. + far_side.connect(arena) # Run and jump. + + # Only if you can use the seesaw or Crouch Jump from the seesaw's edge. + far_side.connect(far_side_cliff, rule=lambda state: + state.has("Jump Dive", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + + # Only if you can break the bone bridges to carry blue eco over the mud pit. + far_side.connect(far_side_cache, rule=lambda state: can_fight(state, player)) + + far_side_cliff.connect(far_side) # Run and jump down. + + barrel_course.connect(cannon) # Run and jump (dodge barrels). + + cannon.connect(barrel_course) # Run and jump (dodge barrels). + cannon.connect(arena) # Run and jump down. + cannon.connect(upper_approach) # Run and jump down. + + upper_approach.connect(lower_approach) # Jump down. + upper_approach.connect(arena) # Jump down. + + # One cliff is accessible, but only via Crouch Jump. + lower_approach.connect(upper_approach, rule=lambda state: state.has_all(("Crouch", "Crouch Jump"), player)) + + # Requires breaking bone bridges. + lower_approach.connect(arena, rule=lambda state: can_fight(state, player)) + + arena.connect(lower_approach) # Run. + arena.connect(far_side) # Run. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(muse_course) + world.level_to_regions[level_name].append(zoomer) + world.level_to_regions[level_name].append(ship) + world.level_to_regions[level_name].append(far_side) + world.level_to_regions[level_name].append(far_side_cliff) + world.level_to_regions[level_name].append(far_side_cache) + world.level_to_regions[level_name].append(barrel_course) + world.level_to_regions[level_name].append(cannon) + world.level_to_regions[level_name].append(upper_approach) + world.level_to_regions[level_name].append(lower_approach) + world.level_to_regions[level_name].append(arena) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(4, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/mountain_pass_regions.py b/worlds/jakanddaxter/regs/mountain_pass_regions.py new file mode 100644 index 000000000000..bd26be8dd2bd --- /dev/null +++ b/worlds/jakanddaxter/regs/mountain_pass_regions.py @@ -0,0 +1,67 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import scout_locations as scouts +from worlds.generic.Rules import add_rule + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This is basically just Klaww. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_cell_locations([86]) + + # Some folks prefer firing Yellow Eco from the hip, so optionally put this rule before Klaww. Klaww is the only + # location in main_area, so he's at index 0. + if world.options.require_punch_for_klaww: + add_rule(main_area.locations[0], lambda state: state.has("Punch", player)) + + race = JakAndDaxterRegion("Race", player, multiworld, level_name, 50) + race.add_cell_locations([87]) + + # All scout flies can be broken with the zoomer. + race.add_fly_locations(scouts.locMP_scoutTable.keys()) + + shortcut = JakAndDaxterRegion("Shortcut", player, multiworld, level_name, 0) + shortcut.add_cell_locations([110]) + + # Of course, in order to make it to the race region, you must defeat Klaww. He's not optional. + # So we need to set up this inter-region rule as well (or make it free if the setting is off). + if world.options.require_punch_for_klaww: + main_area.connect(race, rule=lambda state: state.has("Punch", player)) + else: + main_area.connect(race) + + # You actually can go backwards from the race back to Klaww's area. + race.connect(main_area) + race.connect(shortcut, rule=lambda state: state.has("Yellow Eco Switch", player)) + + shortcut.connect(race) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(race) + world.level_to_regions[level_name].append(shortcut) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(10, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Return race required for inter-level connections. + return main_area, race diff --git a/worlds/jakanddaxter/regs/precursor_basin_regions.py b/worlds/jakanddaxter/regs/precursor_basin_regions.py new file mode 100644 index 000000000000..25a109155b92 --- /dev/null +++ b/worlds/jakanddaxter/regs/precursor_basin_regions.py @@ -0,0 +1,38 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_reach_orbs_level +from ..locs import cell_locations as cells, scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 200) + + # Everything is accessible by making contact with the zoomer. + main_area.add_cell_locations(cells.locPB_cellTable.keys()) + main_area.add_fly_locations(scouts.locPB_scoutTable.keys()) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(9, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/region_base.py b/worlds/jakanddaxter/regs/region_base.py new file mode 100644 index 000000000000..cb1005aa7a0c --- /dev/null +++ b/worlds/jakanddaxter/regs/region_base.py @@ -0,0 +1,91 @@ +from typing import Iterable +from BaseClasses import MultiWorld, Region +from ..game_id import jak1_name +from ..locations import JakAndDaxterLocation, location_table +from ..locs import (orb_locations as orbs, + cell_locations as cells, + scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches) +from worlds.generic.Rules import CollectionRule + + +class JakAndDaxterRegion(Region): + """ + Holds region information such as name, level name, number of orbs available, etc. + We especially need orb counts to be tracked because we need to know when you can + afford the Citizen and Oracle orb payments for more checks. + """ + game: str = jak1_name + level_name: str + orb_count: int + location_count: int = 0 + + def __init__(self, name: str, player: int, multiworld: MultiWorld, level_name: str = "", orb_count: int = 0): + formatted_name = f"{level_name} {name}".strip() + super().__init__(formatted_name, player, multiworld) + self.level_name = level_name + self.orb_count = orb_count + + def add_cell_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Power Cell Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = cells.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_fly_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Scout Fly Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = scouts.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_special_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds a Special Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + Special Locations should be matched alongside their respective + Power Cell Locations, so you get 2 unlocks for these rather than 1. + """ + for loc in locations: + ap_id = specials.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_cache_locations(self, locations: Iterable[int], access_rule: CollectionRule | None = None) -> None: + """ + Adds an Orb Cache Location to this region with the given access rule. + Converts Game ID's to AP ID's for you. + """ + for loc in locations: + ap_id = caches.to_ap_id(loc) + self.add_jak_location(ap_id, location_table[ap_id], access_rule) + + def add_orb_locations(self, level_index: int, bundle_index: int, access_rule: CollectionRule | None = None) -> None: + """ + Adds Orb Bundle Locations to this region equal to `bundle_count`. Used only when Per-Level Orbsanity is enabled. + The orb factory class will handle AP ID enumeration. + """ + bundle_address = orbs.create_address(level_index, bundle_index) + location = JakAndDaxterLocation(self.player, + f"{self.level_name} Orb Bundle {bundle_index + 1}".strip(), + orbs.to_ap_id(bundle_address), + self) + if access_rule: + location.access_rule = access_rule + self.locations.append(location) + self.location_count += 1 + + def add_jak_location(self, ap_id: int, name: str, access_rule: CollectionRule | None = None) -> None: + """ + Helper function to add Locations. Not to be used directly. + """ + location = JakAndDaxterLocation(self.player, name, ap_id, self) + if access_rule: + location.access_rule = access_rule + self.locations.append(location) + self.location_count += 1 diff --git a/worlds/jakanddaxter/regs/rock_village_regions.py b/worlds/jakanddaxter/regs/rock_village_regions.py new file mode 100644 index 000000000000..2138eb119404 --- /dev/null +++ b/worlds/jakanddaxter/regs/rock_village_regions.py @@ -0,0 +1,75 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> tuple[JakAndDaxterRegion, ...]: + multiworld = world.multiworld + options = world.options + player = world.player + + # This includes most of the area surrounding LPC as well, for orb_count purposes. You can swim and single jump. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 23) + main_area.add_cell_locations([31], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([32], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([33], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([34], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([35], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 34)) + + # These 2 scout fly boxes can be broken by running with nearby blue eco. + main_area.add_fly_locations([196684, 262220]) + main_area.add_fly_locations([76, 131148, 65612, 327756], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Warrior Pontoon check. You just talk to him and get his introduction. + main_area.add_special_locations([33]) + + orb_cache = JakAndDaxterRegion("Orb Cache", player, multiworld, level_name, 20) + + # You need roll jump to be able to reach this before the blue eco runs out. + orb_cache.add_cache_locations([10945], access_rule=lambda state: state.has_all(("Roll", "Roll Jump"), player)) + + # Fly here can be gotten with Yellow Eco from Boggy, goggles, and no extra movement options (see fly ID 43). + pontoon_bridge = JakAndDaxterRegion("Pontoon Bridge", player, multiworld, level_name, 7) + pontoon_bridge.add_fly_locations([393292]) + + klaww_cliff = JakAndDaxterRegion("Klaww's Cliff", player, multiworld, level_name, 0) + + main_area.connect(orb_cache, rule=lambda state: state.has_all(("Roll", "Roll Jump"), player)) + main_area.connect(pontoon_bridge, rule=lambda state: state.has("Warrior's Pontoons", player)) + + orb_cache.connect(main_area) + + pontoon_bridge.connect(main_area, rule=lambda state: state.has("Warrior's Pontoons", player)) + pontoon_bridge.connect(klaww_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + klaww_cliff.connect(pontoon_bridge) # Just jump back down. + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(orb_cache) + world.level_to_regions[level_name].append(pontoon_bridge) + world.level_to_regions[level_name].append(klaww_cliff) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(6, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + # Return klaww_cliff required for inter-level connections. + return main_area, pontoon_bridge, klaww_cliff diff --git a/worlds/jakanddaxter/regs/sandover_village_regions.py b/worlds/jakanddaxter/regs/sandover_village_regions.py new file mode 100644 index 000000000000..3969cdb41ad2 --- /dev/null +++ b/worlds/jakanddaxter/regs/sandover_village_regions.py @@ -0,0 +1,83 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 26) + + # Yakows requires no combat. + main_area.add_cell_locations([10]) + main_area.add_cell_locations([11], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([12], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + + # These 4 scout fly boxes can be broken by running with all the blue eco from Sentinel Beach. + main_area.add_fly_locations([262219, 327755, 131147, 65611]) + + # The farmer's scout fly. You can either get the Orb Cache Cliff blue eco, or break it normally. + main_area.add_fly_locations([196683], access_rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or can_free_scout_flies(state, player)) + + orb_cache_cliff = JakAndDaxterRegion("Orb Cache Cliff", player, multiworld, level_name, 15) + orb_cache_cliff.add_cache_locations([10344]) + + yakow_cliff = JakAndDaxterRegion("Yakow Cliff", player, multiworld, level_name, 3) + yakow_cliff.add_fly_locations([75], access_rule=lambda state: can_free_scout_flies(state, player)) + + oracle_platforms = JakAndDaxterRegion("Oracle Platforms", player, multiworld, level_name, 6) + oracle_platforms.add_cell_locations([13], access_rule=lambda state: + world.can_trade(state, world.total_trade_orbs, None)) + oracle_platforms.add_cell_locations([14], access_rule=lambda state: + world.can_trade(state, world.total_trade_orbs, 13)) + oracle_platforms.add_fly_locations([393291], access_rule=lambda state: + can_free_scout_flies(state, player)) + + main_area.connect(orb_cache_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + main_area.connect(yakow_cliff, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or state.has_all(("Crouch", "Crouch Uppercut", "Jump Kick"), player)) + + main_area.connect(oracle_platforms, rule=lambda state: + state.has_all(("Roll", "Roll Jump"), player) + or state.has_all(("Double Jump", "Jump Kick"), player)) + + # All these can go back to main_area immediately. + orb_cache_cliff.connect(main_area) + yakow_cliff.connect(main_area) + oracle_platforms.connect(main_area) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(orb_cache_cliff) + world.level_to_regions[level_name].append(yakow_cliff) + world.level_to_regions[level_name].append(oracle_platforms) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(1, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/sentinel_beach_regions.py b/worlds/jakanddaxter/regs/sentinel_beach_regions.py new file mode 100644 index 000000000000..293215ea8232 --- /dev/null +++ b/worlds/jakanddaxter/regs/sentinel_beach_regions.py @@ -0,0 +1,108 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 128) + main_area.add_cell_locations([18, 21, 22]) + + # These scout fly boxes can be broken by running with freely accessible blue eco. + # The 3 clusters by the Flut Flut egg can go surprisingly far. + main_area.add_fly_locations([327700, 20, 65556, 262164]) + + # This scout fly box can be broken with the locked blue eco vent, or by normal combat tricks. + main_area.add_fly_locations([393236], access_rule=lambda state: + state.has("Blue Eco Switch", player) + or can_free_scout_flies(state, player)) + + # No need for the blue eco vent for either of the orb caches. + main_area.add_cache_locations([12634, 12635]) + + pelican = JakAndDaxterRegion("Pelican", player, multiworld, level_name, 0) + pelican.add_cell_locations([16], access_rule=lambda state: can_fight(state, player)) + + # Only these specific attacks can push the flut flut egg off the cliff. + flut_flut_egg = JakAndDaxterRegion("Flut Flut Egg", player, multiworld, level_name, 0) + flut_flut_egg.add_cell_locations([17], access_rule=lambda state: + state.has_any(("Punch", "Kick", "Jump Kick"), player)) + flut_flut_egg.add_special_locations([17], access_rule=lambda state: + state.has_any(("Punch", "Kick", "Jump Kick"), player)) + + eco_harvesters = JakAndDaxterRegion("Eco Harvesters", player, multiworld, level_name, 0) + eco_harvesters.add_cell_locations([15], access_rule=lambda state: can_fight(state, player)) + + green_ridge = JakAndDaxterRegion("Ridge Near Green Vents", player, multiworld, level_name, 5) + green_ridge.add_fly_locations([131092], access_rule=lambda state: can_free_scout_flies(state, player)) + + blue_ridge = JakAndDaxterRegion("Ridge Near Blue Vent", player, multiworld, level_name, 5) + blue_ridge.add_fly_locations([196628], access_rule=lambda state: + state.has("Blue Eco Switch", player) + or can_free_scout_flies(state, player)) + + cannon_tower = JakAndDaxterRegion("Cannon Tower", player, multiworld, level_name, 12) + cannon_tower.add_cell_locations([19], access_rule=lambda state: can_fight(state, player)) + + main_area.connect(pelican) # Swim and jump. + main_area.connect(flut_flut_egg) # Run and jump. + main_area.connect(eco_harvesters) # Run. + + # We need a helper function for the uppercut logs. + def can_uppercut_and_jump_logs(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + and (state.has_all(("Crouch", "Crouch Uppercut"), p) + or state.has_all(("Punch", "Punch Uppercut"), p))) + + # If you have double jump or crouch jump, you don't need the logs to reach this place. + main_area.connect(green_ridge, rule=lambda state: + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player) + or can_uppercut_and_jump_logs(state, player)) + + # If you have the blue eco jump pad, you don't need the logs to reach this place. + main_area.connect(blue_ridge, rule=lambda state: + state.has("Blue Eco Switch", player) + or can_uppercut_and_jump_logs(state, player)) + + main_area.connect(cannon_tower, rule=lambda state: state.has("Blue Eco Switch", player)) + + # All these can go back to main_area immediately. + pelican.connect(main_area) + flut_flut_egg.connect(main_area) + eco_harvesters.connect(main_area) + green_ridge.connect(main_area) + blue_ridge.connect(main_area) + cannon_tower.connect(main_area) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(pelican) + world.level_to_regions[level_name].append(flut_flut_egg) + world.level_to_regions[level_name].append(eco_harvesters) + world.level_to_regions[level_name].append(green_ridge) + world.level_to_regions[level_name].append(blue_ridge) + world.level_to_regions[level_name].append(cannon_tower) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 150 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(2, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/snowy_mountain_regions.py b/worlds/jakanddaxter/regs/snowy_mountain_regions.py new file mode 100644 index 000000000000..5adc3e9d2228 --- /dev/null +++ b/worlds/jakanddaxter/regs/snowy_mountain_regions.py @@ -0,0 +1,203 @@ +from BaseClasses import CollectionState +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +# God help me... here we go. +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # We need a few helper functions. + def can_cross_long_gap(state: CollectionState, p: int) -> bool: + return (state.has_all(("Roll", "Roll Jump"), p) + or state.has_all(("Double Jump", "Jump Kick"), p)) + + def can_jump_blockers(state: CollectionState, p: int) -> bool: + return (state.has_any(("Double Jump", "Jump Kick"), p) + or state.has_all(("Crouch", "Crouch Jump"), p) + or state.has_all(("Punch", "Punch Uppercut"), p)) + + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 0) + main_area.add_fly_locations([65], access_rule=lambda state: can_free_scout_flies(state, player)) + + # We need a few virtual regions like we had for Dark Crystals in Spider Cave. + # First, a virtual region for the glacier lurkers. + glacier_lurkers = JakAndDaxterRegion("Glacier Lurkers", player, multiworld, level_name, 0) + + # Need to fight all the troops. + # Troop in snowball_canyon: cross main_area. + # Troop in ice_skating_rink: cross main_area and fort_exterior. + # Troop in fort_exterior: cross main_area and fort_exterior. + glacier_lurkers.add_cell_locations([61], access_rule=lambda state: + can_fight(state, player) + and can_cross_long_gap(state, player)) + + # Second, a virtual region for the precursor blockers. Unlike the others, this contains orbs: + # the total number of orbs that sit on top of the blockers. Yes, there are only 8. + blockers = JakAndDaxterRegion("Precursor Blockers", player, multiworld, level_name, 8) + + # 1 in main_area + # 2 in snowball_canyon + # 4 in ice_skating_rink + # 3 in fort_exterior + # 3 in bunny_cave_start + blockers.add_cell_locations([66], access_rule=lambda state: + can_fight(state, player) + and can_cross_long_gap(state, player)) + + snowball_canyon = JakAndDaxterRegion("Snowball Canyon", player, multiworld, level_name, 28) + + # The scout fly box *can* be broken without YES, so leave it in this region. + frozen_box_cave = JakAndDaxterRegion("Frozen Box Cave", player, multiworld, level_name, 12) + frozen_box_cave.add_fly_locations([327745], access_rule=lambda state: + state.has("Yellow Eco Switch", player) + or can_free_scout_flies(state, player)) + + # This region has crates that can *only* be broken with YES. + frozen_box_cave_crates = JakAndDaxterRegion("Frozen Box Cave Orb Crates", player, multiworld, level_name, 8) + frozen_box_cave_crates.add_cell_locations([67], access_rule=lambda state: + state.has("Yellow Eco Switch", player)) + + # Include 6 orbs on the twin elevator ice ramp. + ice_skating_rink = JakAndDaxterRegion("Ice Skating Rink", player, multiworld, level_name, 20) + ice_skating_rink.add_fly_locations([131137], access_rule=lambda state: can_free_scout_flies(state, player)) + + flut_flut_course = JakAndDaxterRegion("Flut Flut Course", player, multiworld, level_name, 15) + flut_flut_course.add_cell_locations([63], access_rule=lambda state: state.has("Flut Flut", player)) + flut_flut_course.add_special_locations([63], access_rule=lambda state: state.has("Flut Flut", player)) + + # Includes the bridge from snowball_canyon, the area beneath that bridge, and the areas around the fort. + fort_exterior = JakAndDaxterRegion("Fort Exterior", player, multiworld, level_name, 20) + fort_exterior.add_fly_locations([65601, 393281], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Includes the icy island and bridge outside the cave entrance. + bunny_cave_start = JakAndDaxterRegion("Bunny Cave (Start)", player, multiworld, level_name, 10) + + # Includes the cell and 3 orbs at the exit. + bunny_cave_end = JakAndDaxterRegion("Bunny Cave (End)", player, multiworld, level_name, 3) + bunny_cave_end.add_cell_locations([64]) + + switch_cave = JakAndDaxterRegion("Yellow Eco Switch Cave", player, multiworld, level_name, 4) + switch_cave.add_cell_locations([60]) + switch_cave.add_special_locations([60]) + + # Only what can be covered by single jump. + fort_interior = JakAndDaxterRegion("Fort Interior (Main)", player, multiworld, level_name, 19) + + # Reaching the top of the watch tower, getting the fly with the blue eco, and falling down to get the caches. + fort_interior_caches = JakAndDaxterRegion("Fort Interior (Caches)", player, multiworld, level_name, 51) + fort_interior_caches.add_fly_locations([196673]) + fort_interior_caches.add_cache_locations([23348, 23349, 23350]) + + # Need higher jump. + fort_interior_base = JakAndDaxterRegion("Fort Interior (Base)", player, multiworld, level_name, 0) + fort_interior_base.add_fly_locations([262209], access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Need farther jump. + fort_interior_course_end = JakAndDaxterRegion("Fort Interior (Course End)", player, multiworld, level_name, 2) + fort_interior_course_end.add_cell_locations([62]) + + # Wire up the virtual regions first. + main_area.connect(blockers, rule=lambda state: can_jump_blockers(state, player)) + main_area.connect(glacier_lurkers, rule=lambda state: can_fight(state, player)) + + # Yes, the only way into the rest of the level requires advanced movement. + main_area.connect(snowball_canyon, rule=lambda state: can_cross_long_gap(state, player)) + + snowball_canyon.connect(main_area) # But you can just jump down and run up the ramp. + snowball_canyon.connect(bunny_cave_start) # Jump down from the glacier troop cliff. + snowball_canyon.connect(fort_exterior) # Jump down, to the left of frozen box cave. + snowball_canyon.connect(frozen_box_cave, rule=lambda state: # More advanced movement. + can_cross_long_gap(state, player)) + + frozen_box_cave.connect(snowball_canyon, rule=lambda state: # Same movement to go back. + can_cross_long_gap(state, player)) + frozen_box_cave.connect(frozen_box_cave_crates, rule=lambda state: # YES to get these crates. + state.has("Yellow Eco Switch", player)) + frozen_box_cave.connect(ice_skating_rink, rule=lambda state: # Same movement to go forward. + can_cross_long_gap(state, player)) + + frozen_box_cave_crates.connect(frozen_box_cave) # Semi-virtual region, no moves req'd. + + ice_skating_rink.connect(frozen_box_cave, rule=lambda state: # Same movement to go back. + can_cross_long_gap(state, player)) + ice_skating_rink.connect(flut_flut_course, rule=lambda state: # Duh. + state.has("Flut Flut", player)) + ice_skating_rink.connect(fort_exterior) # Just slide down the elevator ramp. + + fort_exterior.connect(ice_skating_rink, rule=lambda state: # Twin elevators OR scout fly ledge. + can_cross_long_gap(state, player)) # Both doable with main_gap logic. + fort_exterior.connect(snowball_canyon) # Run across bridge. + fort_exterior.connect(fort_interior, rule=lambda state: # Duh. + state.has("Snowy Fort Gate", player)) + fort_exterior.connect(bunny_cave_start) # Run across bridge. + fort_exterior.connect(switch_cave, rule=lambda state: # Yes, blocker jumps work here. + can_jump_blockers(state, player)) + + fort_interior.connect(fort_interior_caches, rule=lambda state: # Just need a little height. + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + fort_interior.connect(fort_interior_base, rule=lambda state: # Just need a little height. + state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player)) + fort_interior.connect(fort_interior_course_end, rule=lambda state: # Just need a little distance. + state.has_any(("Double Jump", "Jump Kick"), player) + or state.has_all(("Punch", "Punch Uppercut"), player)) + + flut_flut_course.connect(fort_exterior) # Ride the elevator. + + # Must fight way through cave, but there is also a grab-less ledge we must jump over. + bunny_cave_start.connect(bunny_cave_end, rule=lambda state: + can_fight(state, player) + and (state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player))) + + # All jump down. + fort_interior_caches.connect(fort_interior) + fort_interior_base.connect(fort_interior) + fort_interior_course_end.connect(fort_interior) + switch_cave.connect(fort_exterior) + bunny_cave_end.connect(fort_exterior) + + # I really hope that is everything. + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(glacier_lurkers) + world.level_to_regions[level_name].append(blockers) + world.level_to_regions[level_name].append(snowball_canyon) + world.level_to_regions[level_name].append(frozen_box_cave) + world.level_to_regions[level_name].append(frozen_box_cave_crates) + world.level_to_regions[level_name].append(ice_skating_rink) + world.level_to_regions[level_name].append(flut_flut_course) + world.level_to_regions[level_name].append(fort_exterior) + world.level_to_regions[level_name].append(bunny_cave_start) + world.level_to_regions[level_name].append(bunny_cave_end) + world.level_to_regions[level_name].append(switch_cave) + world.level_to_regions[level_name].append(fort_interior) + world.level_to_regions[level_name].append(fort_interior_caches) + world.level_to_regions[level_name].append(fort_interior_base) + world.level_to_regions[level_name].append(fort_interior_course_end) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(12, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/spider_cave_regions.py b/worlds/jakanddaxter/regs/spider_cave_regions.py new file mode 100644 index 000000000000..6069bbb80c2b --- /dev/null +++ b/worlds/jakanddaxter/regs/spider_cave_regions.py @@ -0,0 +1,127 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_fight, can_reach_orbs_level + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # A large amount of this area can be covered by single jump, floating platforms, web trampolines, and goggles. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 63) + main_area.add_cell_locations([78, 84]) + main_area.add_fly_locations([327765, 393301, 196693, 131157]) + + # This is a virtual region describing what you need to DO to get the Dark Crystal power cell, + # rather than describing where each of the crystals ARE, because you can destroy them in any order, + # and you need to destroy ALL of them to get the cell. + dark_crystals = JakAndDaxterRegion("Dark Crystals", player, multiworld, level_name, 0) + + # can_fight = The underwater crystal in dark cave. + # Roll Jump = The underwater crystal across a long dark eco pool. + # The rest of the crystals can be destroyed with yellow eco in main_area. + dark_crystals.add_cell_locations([79], access_rule=lambda state: + can_fight(state, player) + and state.has_all(("Roll", "Roll Jump"), player)) + + dark_cave = JakAndDaxterRegion("Dark Cave", player, multiworld, level_name, 5) + dark_cave.add_cell_locations([80]) + dark_cave.add_fly_locations([262229], access_rule=lambda state: can_free_scout_flies(state, player)) + + robot_cave = JakAndDaxterRegion("Robot Cave", player, multiworld, level_name, 0) + + # Need double jump for orbs. + scaffolding_level_zero = JakAndDaxterRegion("Robot Scaffolding Level 0", player, multiworld, level_name, 12) + + scaffolding_level_one = JakAndDaxterRegion("Robot Scaffolding Level 1", player, multiworld, level_name, 53) + scaffolding_level_one.add_fly_locations([85]) # Shootable. + + scaffolding_level_two = JakAndDaxterRegion("Robot Scaffolding Level 2", player, multiworld, level_name, 4) + + # Using the blue eco from the pole course, you can single jump to the scout fly up here. + scaffolding_level_three = JakAndDaxterRegion("Robot Scaffolding Level 3", player, multiworld, level_name, 29) + scaffolding_level_three.add_cell_locations([81]) + scaffolding_level_three.add_fly_locations([65621]) + + pole_course = JakAndDaxterRegion("Pole Course", player, multiworld, level_name, 18) + pole_course.add_cell_locations([82]) + + # You only need combat to fight through the spiders, but to collect the orb crates, + # you will need the yellow eco vent unlocked. + spider_tunnel = JakAndDaxterRegion("Spider Tunnel", player, multiworld, level_name, 4) + spider_tunnel.add_cell_locations([83]) + + spider_tunnel_crates = JakAndDaxterRegion("Spider Tunnel Orb Crates", player, multiworld, level_name, 12) + + main_area.connect(dark_crystals) + main_area.connect(robot_cave) + main_area.connect(dark_cave, rule=lambda state: + can_fight(state, player) + and (state.has("Double Jump", player) + or state.has_all(("Crouch", "Crouch Jump"), player))) + + robot_cave.connect(main_area) + robot_cave.connect(pole_course) # Nothing special required. + robot_cave.connect(scaffolding_level_one) # Ramps lead to level 1. + robot_cave.connect(spider_tunnel) # Web trampolines (bounce twice on each to gain momentum). + + pole_course.connect(robot_cave) # Blue eco platform down. + + scaffolding_level_one.connect(robot_cave) # All scaffolding (level 1+) connects back by jumping down. + + # Elevator, but the orbs need double jump or jump kick. + scaffolding_level_one.connect(scaffolding_level_zero, rule=lambda state: + state.has_any(("Double Jump", "Jump Kick"), player)) + + # Narrow enough that enemies are unavoidable. + scaffolding_level_one.connect(scaffolding_level_two, rule=lambda state: can_fight(state, player)) + + scaffolding_level_zero.connect(scaffolding_level_one) # Elevator. + + scaffolding_level_two.connect(robot_cave) # Jump down. + scaffolding_level_two.connect(scaffolding_level_one) # Elevator. + + # Elevator, but narrow enough that enemies are unavoidable. + scaffolding_level_two.connect(scaffolding_level_three, rule=lambda state: can_fight(state, player)) + + scaffolding_level_three.connect(robot_cave) # Jump down. + scaffolding_level_three.connect(scaffolding_level_two) # Elevator. + + spider_tunnel.connect(robot_cave) # Back to web trampolines. + spider_tunnel.connect(main_area) # Escape with jump pad. + + # Requires yellow eco switch. + spider_tunnel.connect(spider_tunnel_crates, rule=lambda state: state.has("Yellow Eco Switch", player)) + + world.level_to_regions[level_name].append(main_area) + world.level_to_regions[level_name].append(dark_crystals) + world.level_to_regions[level_name].append(dark_cave) + world.level_to_regions[level_name].append(robot_cave) + world.level_to_regions[level_name].append(scaffolding_level_zero) + world.level_to_regions[level_name].append(scaffolding_level_one) + world.level_to_regions[level_name].append(scaffolding_level_two) + world.level_to_regions[level_name].append(scaffolding_level_three) + world.level_to_regions[level_name].append(pole_course) + world.level_to_regions[level_name].append(spider_tunnel) + world.level_to_regions[level_name].append(spider_tunnel_crates) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 200 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(13, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/regs/volcanic_crater_regions.py b/worlds/jakanddaxter/regs/volcanic_crater_regions.py new file mode 100644 index 000000000000..47bfccfd2b7d --- /dev/null +++ b/worlds/jakanddaxter/regs/volcanic_crater_regions.py @@ -0,0 +1,52 @@ +from .region_base import JakAndDaxterRegion +from ..options import EnableOrbsanity +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from .. import JakAndDaxterWorld +from ..rules import can_free_scout_flies, can_reach_orbs_level +from ..locs import scout_locations as scouts + + +def build_regions(level_name: str, world: "JakAndDaxterWorld") -> JakAndDaxterRegion: + multiworld = world.multiworld + options = world.options + player = world.player + + # No area is inaccessible in VC even with only running and jumping. + main_area = JakAndDaxterRegion("Main Area", player, multiworld, level_name, 50) + main_area.add_cell_locations([96], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([97], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 96)) + main_area.add_cell_locations([98], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 97)) + main_area.add_cell_locations([99], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 98)) + main_area.add_cell_locations([100], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, None)) + main_area.add_cell_locations([101], access_rule=lambda state: world.can_trade(state, world.total_trade_orbs, 100)) + + # Hidden Power Cell: you can carry yellow eco from Spider Cave just by running and jumping + # and using your Goggles to shoot the box (you do not need Punch to shoot from FP mode). + main_area.add_cell_locations([74]) + + # No blue eco sources in this area, all boxes must be broken by hand (yellow eco can't be carried far enough). + main_area.add_fly_locations(scouts.locVC_scoutTable.keys(), access_rule=lambda state: + can_free_scout_flies(state, player)) + + # Approach the gondola to get this check. + main_area.add_special_locations([105]) + + world.level_to_regions[level_name].append(main_area) + + # If Per-Level Orbsanity is enabled, build the special Orbsanity Region. This is a virtual region always + # accessible to Main Area. The Locations within are automatically checked when you collect enough orbs. + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + orbs = JakAndDaxterRegion("Orbsanity", player, multiworld, level_name) + + bundle_count = 50 // world.orb_bundle_size + for bundle_index in range(bundle_count): + amount = world.orb_bundle_size * (bundle_index + 1) + orbs.add_orb_locations(11, + bundle_index, + access_rule=lambda state, level=level_name, orb_amount=amount: + can_reach_orbs_level(state, player, world, level, orb_amount)) + multiworld.regions.append(orbs) + main_area.connect(orbs) + + return main_area diff --git a/worlds/jakanddaxter/requirements.txt b/worlds/jakanddaxter/requirements.txt new file mode 100644 index 000000000000..ca36764fbfaa --- /dev/null +++ b/worlds/jakanddaxter/requirements.txt @@ -0,0 +1 @@ +Pymem>=1.13.0 diff --git a/worlds/jakanddaxter/rules.py b/worlds/jakanddaxter/rules.py new file mode 100644 index 000000000000..25a8323f4dff --- /dev/null +++ b/worlds/jakanddaxter/rules.py @@ -0,0 +1,270 @@ +import logging +import math +import typing +from BaseClasses import CollectionState +from Options import OptionError +from .options import (EnableOrbsanity, + GlobalOrbsanityBundleSize, + PerLevelOrbsanityBundleSize, + FireCanyonCellCount, + MountainPassCellCount, + LavaTubeCellCount, + CitizenOrbTradeAmount, + OracleOrbTradeAmount) +from .locs import cell_locations as cells +from .locations import location_table +from .levels import level_table + +if typing.TYPE_CHECKING: + from . import JakAndDaxterWorld + + +def set_orb_trade_rule(world: "JakAndDaxterWorld"): + options = world.options + player = world.player + + if options.enable_orbsanity == EnableOrbsanity.option_off: + world.can_trade = lambda state, required_orbs, required_previous_trade: ( + can_trade_vanilla(state, player, world, required_orbs, required_previous_trade)) + else: + world.can_trade = lambda state, required_orbs, required_previous_trade: ( + can_trade_orbsanity(state, player, world, required_orbs, required_previous_trade)) + + +def recalculate_reachable_orbs(state: CollectionState, player: int, world: "JakAndDaxterWorld") -> None: + + # Recalculate every level, every time the cache is stale, because you don't know + # when a specific bundle of orbs in one level may unlock access to another. + accessible_total_orbs = 0 + for level in level_table: + accessible_level_orbs = count_reachable_orbs_level(state, world, level) + accessible_total_orbs += accessible_level_orbs + state.prog_items[player][f"{level} Reachable Orbs".lstrip()] = accessible_level_orbs + + # Also recalculate the global count, still used even when Orbsanity is Off. + state.prog_items[player]["Reachable Orbs"] = accessible_total_orbs + state.prog_items[player]["Reachable Orbs Fresh"] = True + + +def count_reachable_orbs_global(state: CollectionState, + world: "JakAndDaxterWorld") -> int: + + accessible_orbs = 0 + for level_regions in world.level_to_orb_regions.values(): + for region in level_regions: + if region.can_reach(state): + accessible_orbs += region.orb_count + return accessible_orbs + + +def count_reachable_orbs_level(state: CollectionState, + world: "JakAndDaxterWorld", + level_name: str = "") -> int: + + accessible_orbs = 0 + for region in world.level_to_orb_regions[level_name]: + if region.can_reach(state): + accessible_orbs += region.orb_count + return accessible_orbs + + +def can_reach_orbs_global(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + orb_amount: int) -> bool: + + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + return state.has("Reachable Orbs", player, orb_amount) + + +def can_reach_orbs_level(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + level_name: str, + orb_amount: int) -> bool: + + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + return state.has(f"{level_name} Reachable Orbs", player, orb_amount) + + +def can_trade_vanilla(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + required_orbs: int, + required_previous_trade: typing.Optional[int] = None) -> bool: + + # With Orbsanity Off, Reachable Orbs are in fact Tradeable Orbs. + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + if required_previous_trade: + name_of_previous_trade = location_table[cells.to_ap_id(required_previous_trade)] + return (state.has("Reachable Orbs", player, required_orbs) + and state.can_reach_location(name_of_previous_trade, player=player)) + return state.has("Reachable Orbs", player, required_orbs) + + +def can_trade_orbsanity(state: CollectionState, + player: int, + world: "JakAndDaxterWorld", + required_orbs: int, + required_previous_trade: typing.Optional[int] = None) -> bool: + + # Yes, even Orbsanity trades may unlock access to new Reachable Orbs. + if not state.prog_items[player]["Reachable Orbs Fresh"]: + recalculate_reachable_orbs(state, player, world) + + if required_previous_trade: + name_of_previous_trade = location_table[cells.to_ap_id(required_previous_trade)] + return (state.has("Tradeable Orbs", player, required_orbs) + and state.can_reach_location(name_of_previous_trade, player=player)) + return state.has("Tradeable Orbs", player, required_orbs) + + +def can_free_scout_flies(state: CollectionState, player: int) -> bool: + return state.has("Jump Dive", player) or state.has_all({"Crouch", "Crouch Uppercut"}, player) + + +def can_fight(state: CollectionState, player: int) -> bool: + return state.has_any(("Jump Dive", "Jump Kick", "Punch", "Kick"), player) + + +def clamp_cell_limits(world: "JakAndDaxterWorld") -> str: + options = world.options + friendly_message = "" + + if options.fire_canyon_cell_count.value > FireCanyonCellCount.friendly_maximum: + old_value = options.fire_canyon_cell_count.value + options.fire_canyon_cell_count.value = FireCanyonCellCount.friendly_maximum + friendly_message += (f" " + f"{options.fire_canyon_cell_count.display_name} must be no greater than " + f"{FireCanyonCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.mountain_pass_cell_count.value > MountainPassCellCount.friendly_maximum: + old_value = options.mountain_pass_cell_count.value + options.mountain_pass_cell_count.value = MountainPassCellCount.friendly_maximum + friendly_message += (f" " + f"{options.mountain_pass_cell_count.display_name} must be no greater than " + f"{MountainPassCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.lava_tube_cell_count.value > LavaTubeCellCount.friendly_maximum: + old_value = options.lava_tube_cell_count.value + options.lava_tube_cell_count.value = LavaTubeCellCount.friendly_maximum + friendly_message += (f" " + f"{options.lava_tube_cell_count.display_name} must be no greater than " + f"{LavaTubeCellCount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + return friendly_message + + +def clamp_trade_total_limits(world: "JakAndDaxterWorld"): + """Check if we need to recalculate the 2 trade orb options so the total fits under 2000. If so let's keep them + proportional relative to each other. Then we'll recalculate total_trade_orbs. Remember this situation is + only possible if both values are greater than 0, otherwise the absolute maximums would keep them under 2000.""" + options = world.options + friendly_message = "" + + world.total_trade_orbs = (9 * options.citizen_orb_trade_amount) + (6 * options.oracle_orb_trade_amount) + if world.total_trade_orbs > 2000: + old_total = world.total_trade_orbs + old_citizen_value = options.citizen_orb_trade_amount.value + old_oracle_value = options.oracle_orb_trade_amount.value + + coefficient = old_oracle_value / old_citizen_value + + options.citizen_orb_trade_amount.value = math.floor(2000 / (9 + (6 * coefficient))) + options.oracle_orb_trade_amount.value = math.floor(coefficient * options.citizen_orb_trade_amount.value) + world.total_trade_orbs = (9 * options.citizen_orb_trade_amount) + (6 * options.oracle_orb_trade_amount) + + friendly_message += (f" " + f"Required number of orbs ({old_total}) must be no greater than total orbs in the game " + f"(2000). Reduced the value of {world.options.citizen_orb_trade_amount.display_name} " + f"from {old_citizen_value} to {options.citizen_orb_trade_amount.value} and " + f"{world.options.oracle_orb_trade_amount.display_name} from {old_oracle_value} to " + f"{options.oracle_orb_trade_amount.value}.\n") + + return friendly_message + + +def enforce_mp_friendly_limits(world: "JakAndDaxterWorld"): + options = world.options + friendly_message = "" + + if options.enable_orbsanity == EnableOrbsanity.option_global: + if options.global_orbsanity_bundle_size.value < GlobalOrbsanityBundleSize.friendly_minimum: + old_value = options.global_orbsanity_bundle_size.value + options.global_orbsanity_bundle_size.value = GlobalOrbsanityBundleSize.friendly_minimum + friendly_message += (f" " + f"{options.global_orbsanity_bundle_size.display_name} must be no less than " + f"{GlobalOrbsanityBundleSize.friendly_minimum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.global_orbsanity_bundle_size.value > GlobalOrbsanityBundleSize.friendly_maximum: + old_value = options.global_orbsanity_bundle_size.value + options.global_orbsanity_bundle_size.value = GlobalOrbsanityBundleSize.friendly_maximum + friendly_message += (f" " + f"{options.global_orbsanity_bundle_size.display_name} must be no greater than " + f"{GlobalOrbsanityBundleSize.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.enable_orbsanity == EnableOrbsanity.option_per_level: + if options.level_orbsanity_bundle_size.value < PerLevelOrbsanityBundleSize.friendly_minimum: + old_value = options.level_orbsanity_bundle_size.value + options.level_orbsanity_bundle_size.value = PerLevelOrbsanityBundleSize.friendly_minimum + friendly_message += (f" " + f"{options.level_orbsanity_bundle_size.display_name} must be no less than " + f"{PerLevelOrbsanityBundleSize.friendly_minimum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.citizen_orb_trade_amount.value > CitizenOrbTradeAmount.friendly_maximum: + old_value = options.citizen_orb_trade_amount.value + options.citizen_orb_trade_amount.value = CitizenOrbTradeAmount.friendly_maximum + friendly_message += (f" " + f"{options.citizen_orb_trade_amount.display_name} must be no greater than " + f"{CitizenOrbTradeAmount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + if options.oracle_orb_trade_amount.value > OracleOrbTradeAmount.friendly_maximum: + old_value = options.oracle_orb_trade_amount.value + options.oracle_orb_trade_amount.value = OracleOrbTradeAmount.friendly_maximum + friendly_message += (f" " + f"{options.oracle_orb_trade_amount.display_name} must be no greater than " + f"{OracleOrbTradeAmount.friendly_maximum} (was {old_value}), " + f"changed option to appropriate value.\n") + + friendly_message += clamp_cell_limits(world) + friendly_message += clamp_trade_total_limits(world) + + if friendly_message != "": + logging.warning(f"{world.player_name}: Your options have been modified to avoid disrupting the multiworld.\n" + f"{friendly_message}" + f"You can access more advanced options by setting 'enforce_friendly_options' in the seed " + f"generator's host.yaml to false and generating locally. (Use at your own risk!)") + + +def enforce_mp_absolute_limits(world: "JakAndDaxterWorld"): + friendly_message = "" + + friendly_message += clamp_trade_total_limits(world) + + if friendly_message != "": + logging.warning(f"{world.player_name}: Your options have been modified to avoid seed generation failures.\n" + f"{friendly_message}") + + +def enforce_sp_limits(world: "JakAndDaxterWorld"): + friendly_message = "" + + friendly_message += clamp_cell_limits(world) + friendly_message += clamp_trade_total_limits(world) + + if friendly_message != "": + logging.warning(f"{world.player_name}: Your options have been modified to avoid seed generation failures.\n" + f"{friendly_message}") diff --git a/worlds/jakanddaxter/test/__init__.py b/worlds/jakanddaxter/test/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/jakanddaxter/test/bases.py b/worlds/jakanddaxter/test/bases.py new file mode 100644 index 000000000000..73d18b80bf3c --- /dev/null +++ b/worlds/jakanddaxter/test/bases.py @@ -0,0 +1,107 @@ +from worlds.jakanddaxter import JakAndDaxterWorld +from ..game_id import jak1_name +from test.bases import WorldTestBase + + +class JakAndDaxterTestBase(WorldTestBase): + game = jak1_name + world: JakAndDaxterWorld + + level_info = { + "Geyser Rock": { + "cells": 4, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Sandover Village": { + "cells": 6, + "flies": 7, + "orbs": 50, + "caches": 1, + }, + "Forbidden Jungle": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 1, + }, + "Sentinel Beach": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 2, + }, + "Misty Island": { + "cells": 8, + "flies": 7, + "orbs": 150, + "caches": 1, + }, + "Fire Canyon": { + "cells": 2, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Rock Village": { + "cells": 6, + "flies": 7, + "orbs": 50, + "caches": 1, + }, + "Precursor Basin": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Lost Precursor City": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 2, + }, + "Boggy Swamp": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Mountain Pass": { + "cells": 4, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Volcanic Crater": { + "cells": 8, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Spider Cave": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 0, + }, + "Snowy Mountain": { + "cells": 8, + "flies": 7, + "orbs": 200, + "caches": 3, + }, + "Lava Tube": { + "cells": 2, + "flies": 7, + "orbs": 50, + "caches": 0, + }, + "Gol and Maia's Citadel": { + "cells": 5, + "flies": 7, + "orbs": 200, + "caches": 3, + }, + } diff --git a/worlds/jakanddaxter/test/test_locations.py b/worlds/jakanddaxter/test/test_locations.py new file mode 100644 index 000000000000..1d47066b9314 --- /dev/null +++ b/worlds/jakanddaxter/test/test_locations.py @@ -0,0 +1,52 @@ +import typing + +from .bases import JakAndDaxterTestBase +from ..game_id import jak1_id +from ..regs.region_base import JakAndDaxterRegion +from ..locs import (scout_locations as scouts, + special_locations as specials, + orb_cache_locations as caches, + orb_locations as orbs) + + +class LocationsTest(JakAndDaxterTestBase): + + def get_regions(self): + return [typing.cast(JakAndDaxterRegion, reg) for reg in self.multiworld.get_regions(self.player)] + + def test_count_cells(self): + + for level in self.level_info: + cell_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id, jak1_id + scouts.fly_offset): + cell_count += 1 + self.assertEqual(self.level_info[level]["cells"] - 1, cell_count, level) # Don't count the Free 7 Cells. + + def test_count_flies(self): + for level in self.level_info: + fly_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id + scouts.fly_offset, jak1_id + specials.special_offset): + fly_count += 1 + self.assertEqual(self.level_info[level]["flies"], fly_count, level) + + def test_count_orbs(self): + for level in self.level_info: + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + orb_count = sum([reg.orb_count for reg in sublevels]) + self.assertEqual(self.level_info[level]["orbs"], orb_count, level) + + def test_count_caches(self): + for level in self.level_info: + cache_count = 0 + sublevels = [reg for reg in self.get_regions() if reg.level_name == level] + for sl in sublevels: + for loc in sl.locations: + if loc.address in range(jak1_id + caches.orb_cache_offset, jak1_id + orbs.orb_offset): + cache_count += 1 + self.assertEqual(self.level_info[level]["caches"], cache_count, level) diff --git a/worlds/jakanddaxter/test/test_moverando.py b/worlds/jakanddaxter/test/test_moverando.py new file mode 100644 index 000000000000..d912d43af810 --- /dev/null +++ b/worlds/jakanddaxter/test/test_moverando.py @@ -0,0 +1,32 @@ +from .bases import JakAndDaxterTestBase +from ..items import move_item_table + + +class MoveRandoTest(JakAndDaxterTestBase): + options = { + "enable_move_randomizer": True + } + + def test_move_items_in_pool(self): + for move in move_item_table: + self.assertIn(move_item_table[move], {item.name for item in self.multiworld.itempool}) + self.assertNotIn(move_item_table[move], + {item.name for item in self.multiworld.precollected_items[self.player]}) + + def test_cannot_reach_without_move(self): + self.assertAccessDependency( + ["GR: Climb Up The Cliff"], + [["Double Jump"], ["Crouch"]], + only_check_listed=True) + + +class NoMoveRandoTest(JakAndDaxterTestBase): + options = { + "enable_move_randomizer": False + } + + def test_move_items_in_inventory(self): + for move in move_item_table: + self.assertNotIn(move_item_table[move], {item.name for item in self.multiworld.itempool}) + self.assertIn(move_item_table[move], + {item.name for item in self.multiworld.precollected_items[self.player]}) diff --git a/worlds/jakanddaxter/test/test_orbsanity.py b/worlds/jakanddaxter/test/test_orbsanity.py new file mode 100644 index 000000000000..5f871c855247 --- /dev/null +++ b/worlds/jakanddaxter/test/test_orbsanity.py @@ -0,0 +1,61 @@ +from .bases import JakAndDaxterTestBase +from ..items import orb_item_table + + +class NoOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 0, # Off + "level_orbsanity_bundle_size": 25, + "global_orbsanity_bundle_size": 16 + } + + def test_orb_bundles_not_exist_in_pool(self): + for bundle in orb_item_table: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["level_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(0, count) + + bundle_name = orb_item_table[self.options["global_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(0, count) + + +class PerLevelOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 1, # Per Level + "level_orbsanity_bundle_size": 25 + } + + def test_orb_bundles_exist_in_pool(self): + for bundle in orb_item_table: + if bundle == self.options["level_orbsanity_bundle_size"]: + self.assertIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + else: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["level_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(80, count) + + +class GlobalOrbsanityTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, # Global + "global_orbsanity_bundle_size": 16 + } + + def test_orb_bundles_exist_in_pool(self): + for bundle in orb_item_table: + if bundle == self.options["global_orbsanity_bundle_size"]: + self.assertIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + else: + self.assertNotIn(orb_item_table[bundle], {item.name for item in self.multiworld.itempool}) + + def test_orb_bundle_count(self): + bundle_name = orb_item_table[self.options["global_orbsanity_bundle_size"]] + count = len([item.name for item in self.multiworld.itempool if item.name == bundle_name]) + self.assertEqual(125, count) diff --git a/worlds/jakanddaxter/test/test_orderedcellcounts.py b/worlds/jakanddaxter/test/test_orderedcellcounts.py new file mode 100644 index 000000000000..7ad0d76ca50a --- /dev/null +++ b/worlds/jakanddaxter/test/test_orderedcellcounts.py @@ -0,0 +1,29 @@ +from .bases import JakAndDaxterTestBase + + +class ReorderedCellCountsTest(JakAndDaxterTestBase): + options = { + "enable_ordered_cell_counts": True, + "fire_canyon_cell_count": 20, + "mountain_pass_cell_count": 15, + "lava_tube_cell_count": 10, + } + + def test_reordered_cell_counts(self): + self.world.generate_early() + self.assertLessEqual(self.world.options.fire_canyon_cell_count, self.world.options.mountain_pass_cell_count) + self.assertLessEqual(self.world.options.mountain_pass_cell_count, self.world.options.lava_tube_cell_count) + + +class UnorderedCellCountsTest(JakAndDaxterTestBase): + options = { + "enable_ordered_cell_counts": False, + "fire_canyon_cell_count": 20, + "mountain_pass_cell_count": 15, + "lava_tube_cell_count": 10, + } + + def test_unordered_cell_counts(self): + self.world.generate_early() + self.assertGreaterEqual(self.world.options.fire_canyon_cell_count, self.world.options.mountain_pass_cell_count) + self.assertGreaterEqual(self.world.options.mountain_pass_cell_count, self.world.options.lava_tube_cell_count) diff --git a/worlds/jakanddaxter/test/test_trades.py b/worlds/jakanddaxter/test/test_trades.py new file mode 100644 index 000000000000..0277a92353f9 --- /dev/null +++ b/worlds/jakanddaxter/test/test_trades.py @@ -0,0 +1,39 @@ +from .bases import JakAndDaxterTestBase + + +class TradesCostNothingTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, + "global_orbsanity_bundle_size": 10, + "citizen_orb_trade_amount": 0, + "oracle_orb_trade_amount": 0 + } + + def test_orb_items_are_filler(self): + self.collect_all_but("") + self.assertNotIn("10 Precursor Orbs", self.multiworld.state.prog_items) + + def test_trades_are_accessible(self): + self.assertTrue(self.multiworld + .get_location("SV: Bring 90 Orbs To The Mayor", self.player) + .can_reach(self.multiworld.state)) + + +class TradesCostEverythingTest(JakAndDaxterTestBase): + options = { + "enable_orbsanity": 2, + "global_orbsanity_bundle_size": 10, + "citizen_orb_trade_amount": 120, + "oracle_orb_trade_amount": 150 + } + + def test_orb_items_are_progression(self): + self.collect_all_but("") + self.assertIn("10 Precursor Orbs", self.multiworld.state.prog_items[self.player]) + self.assertEqual(198, self.multiworld.state.prog_items[self.player]["10 Precursor Orbs"]) + + def test_trades_are_accessible(self): + self.collect_all_but("") + self.assertTrue(self.multiworld + .get_location("SV: Bring 90 Orbs To The Mayor", self.player) + .can_reach(self.multiworld.state)) diff --git a/worlds/jakanddaxter/test/test_traps.py b/worlds/jakanddaxter/test/test_traps.py new file mode 100644 index 000000000000..841997798bf8 --- /dev/null +++ b/worlds/jakanddaxter/test/test_traps.py @@ -0,0 +1,80 @@ +from BaseClasses import ItemClassification +from .bases import JakAndDaxterTestBase + + +class NoTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 0, + "filler_orb_bundles_replaced_with_traps": 0, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(0, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(29, count) + + +class SomeTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 10, + "filler_orb_bundles_replaced_with_traps": 10, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(10, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(19, count) + + +class MaximumTrapsTest(JakAndDaxterTestBase): + options = { + "filler_power_cells_replaced_with_traps": 100, + "filler_orb_bundles_replaced_with_traps": 100, + "trap_weights": {"Trip Trap": 1}, + } + + def test_trap_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Trip Trap" + and item.classification == ItemClassification.trap]) + self.assertEqual(29, count) + + def test_prog_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.progression_skip_balancing]) + self.assertEqual(72, count) + + def test_fill_power_cells_count(self): + count = len([item.name for item in self.multiworld.itempool + if item.name == "Power Cell" + and item.classification == ItemClassification.filler]) + self.assertEqual(0, count) diff --git a/worlds/kdl3/client.py b/worlds/kdl3/client.py index 97bf68cbd99a..78a43239b4d6 100644 --- a/worlds/kdl3/client.py +++ b/worlds/kdl3/client.py @@ -90,7 +90,7 @@ def cmd_gift(self: "SNIClientCommandProcessor") -> None: async_start(update_object(self.ctx, f"Giftboxes;{self.ctx.team}", { f"{self.ctx.slot}": { - "IsOpen": handler.gifting, + "is_open": handler.gifting, **kdl3_gifting_options } })) @@ -175,11 +175,11 @@ async def pop_gift(self, ctx: "SNIContext") -> None: key, gift = ctx.stored_data[self.giftbox_key].popitem() await pop_object(ctx, self.giftbox_key, key) # first, special cases - traits = [trait["Trait"] for trait in gift["Traits"]] + traits = [trait["trait"] for trait in gift["traits"]] if "Candy" in traits or "Invincible" in traits: # apply invincibility candy self.item_queue.append(0x43) - elif "Tomato" in traits or "tomato" in gift["ItemName"].lower(): + elif "Tomato" in traits or "tomato" in gift["item_name"].lower(): # apply maxim tomato # only want tomatos here, no other vegetable is that good self.item_queue.append(0x42) @@ -187,7 +187,7 @@ async def pop_gift(self, ctx: "SNIContext") -> None: # Apply 1-Up self.item_queue.append(0x41) elif "Currency" in traits or "Star" in traits: - value = gift["ItemValue"] + value = gift.get("item_value", 1) if value >= 50000: self.item_queue.append(0x46) elif value >= 30000: @@ -210,8 +210,8 @@ async def pop_gift(self, ctx: "SNIContext") -> None: # check if it's tasty if any(x in traits for x in ["Consumable", "Food", "Drink", "Heal", "Health"]): # it's tasty!, use quality to decide how much to heal - quality = max((trait["Quality"] for trait in gift["Traits"] - if trait["Trait"] in ["Consumable", "Food", "Drink", "Heal", "Health"])) + quality = max((trait.get("quality", 1.0) for trait in gift["traits"] + if trait["trait"] in ["Consumable", "Food", "Drink", "Heal", "Health"])) quality = min(10, quality * 2) else: # it's not really edible, but he'll eat it anyway @@ -236,23 +236,23 @@ async def pick_gift_recipient(self, ctx: "SNIContext", gift: int) -> None: for slot, info in ctx.stored_data[self.motherbox_key].items(): if int(slot) == ctx.slot and len(ctx.stored_data[self.motherbox_key]) > 1: continue - desire = len(set(info["DesiredTraits"]).intersection([trait["Trait"] for trait in gift_base["Traits"]])) + desire = len(set(info["desired_traits"]).intersection([trait["trait"] for trait in gift_base["traits"]])) if desire > most_applicable: most_applicable = desire most_applicable_slot = int(slot) - elif most_applicable_slot != ctx.slot and most_applicable == -1 and info["AcceptsAnyGift"]: + elif most_applicable_slot == ctx.slot and most_applicable == -1 and info["accepts_any_gift"]: # only send to ourselves if no one else will take it most_applicable_slot = int(slot) # print(most_applicable, most_applicable_slot) item_uuid = uuid.uuid4().hex item = { **gift_base, - "ID": item_uuid, - "Sender": ctx.player_names[ctx.slot], - "Receiver": ctx.player_names[most_applicable_slot], - "SenderTeam": ctx.team, - "ReceiverTeam": ctx.team, # for the moment - "IsRefund": False + "id": item_uuid, + "sender_slot": ctx.slot, + "receiver_slot": most_applicable_slot, + "sender_team": ctx.team, + "receiver_team": ctx.team, # for the moment + "is_refund": False } # print(item) await update_object(ctx, f"Giftbox;{ctx.team};{most_applicable_slot}", { @@ -276,8 +276,9 @@ async def game_watcher(self, ctx: "SNIContext") -> None: if not self.initialize_gifting: self.giftbox_key = f"Giftbox;{ctx.team};{ctx.slot}" self.motherbox_key = f"Giftboxes;{ctx.team}" - enable_gifting = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x01) - await initialize_giftboxes(ctx, self.giftbox_key, self.motherbox_key, bool(enable_gifting[0])) + enable_gifting = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x02) + await initialize_giftboxes(ctx, self.giftbox_key, self.motherbox_key, + bool(int.from_bytes(enable_gifting, "little"))) self.initialize_gifting = True # can't check debug anymore, without going and copying the value. might be important later. if not self.levels: @@ -350,19 +351,19 @@ async def game_watcher(self, ctx: "SNIContext") -> None: self.item_queue.append(item_idx | 0x80) # handle gifts here - gifting_status = await snes_read(ctx, KDL3_GIFTING_FLAG, 0x01) - if hasattr(ctx, "gifting") and ctx.gifting: - if gifting_status[0]: + gifting_status = int.from_bytes(await snes_read(ctx, KDL3_GIFTING_FLAG, 0x02), "little") + if hasattr(self, "gifting") and self.gifting: + if gifting_status: gift = await snes_read(ctx, KDL3_GIFTING_SEND, 0x01) if gift[0]: # we have a gift to send await self.pick_gift_recipient(ctx, gift[0]) snes_buffered_write(ctx, KDL3_GIFTING_SEND, bytes([0x00])) else: - snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x01])) + snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x01, 0x00])) else: - if gifting_status[0]: - snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x00])) + if gifting_status: + snes_buffered_write(ctx, KDL3_GIFTING_FLAG, bytes([0x00, 0x00])) await snes_flush_writes(ctx) diff --git a/worlds/kdl3/gifting.py b/worlds/kdl3/gifting.py index e1626091000e..de1551487404 100644 --- a/worlds/kdl3/gifting.py +++ b/worlds/kdl3/gifting.py @@ -37,157 +37,158 @@ async def initialize_giftboxes(ctx: "SNIContext", giftbox_key: str, motherbox_ke ctx.set_notify(motherbox_key, giftbox_key) await update_object(ctx, f"Giftboxes;{ctx.team}", {f"{ctx.slot}": { - "IsOpen": is_open, + "is_open": is_open, **kdl3_gifting_options }}) + await update_object(ctx, f"Giftbox;{ctx.team};{ctx.slot}", {}) ctx.client_handler.gifting = is_open kdl3_gifting_options = { - "AcceptsAnyGift": True, - "DesiredTraits": [ + "accepts_any_gift": True, + "desired_traits": [ "Consumable", "Food", "Drink", "Candy", "Tomato", "Invincible", "Life", "Heal", "Health", "Trap", "Goo", "Gel", "Slow", "Slowness", "Eject", "Removal" ], - "MinimumGiftVersion": 2, + "minimum_gift_version": 3, } kdl3_gifts = { 1: { - "ItemName": "1-Up", - "Amount": 1, - "ItemValue": 400000, - "Traits": [ + "item_name": "1-Up", + "amount": 1, + "item_value": 400000, + "traits": [ { - "Trait": "Consumable", - "Quality": 1, - "Duration": 1, + "trait": "Consumable", + "quality": 1, + "duration": 1, }, { - "Trait": "Life", - "Quality": 1, - "Duration": 1 + "trait": "Life", + "quality": 1, + "duration": 1 } ] }, 2: { - "ItemName": "Maxim Tomato", - "Amount": 1, - "ItemValue": 500000, - "Traits": [ + "item_name": "Maxim Tomato", + "amount": 1, + "item_value": 500000, + "traits": [ { - "Trait": "Consumable", - "Quality": 5, - "Duration": 1, + "trait": "Consumable", + "quality": 5, + "duration": 1, }, { - "Trait": "Heal", - "Quality": 5, - "Duration": 1, + "trait": "Heal", + "quality": 5, + "duration": 1, }, { - "Trait": "Food", - "Quality": 5, - "Duration": 1, + "trait": "Food", + "quality": 5, + "duration": 1, }, { - "Trait": "Tomato", - "Quality": 5, - "Duration": 1, + "trait": "Tomato", + "quality": 5, + "duration": 1, }, { - "Trait": "Vegetable", - "Quality": 5, - "Duration": 1, + "trait": "Vegetable", + "quality": 5, + "duration": 1, } ] }, 3: { - "ItemName": "Energy Drink", - "Amount": 1, - "ItemValue": 100000, - "Traits": [ + "item_name": "Energy Drink", + "amount": 1, + "item_value": 100000, + "traits": [ { - "Trait": "Consumable", - "Quality": 1, - "Duration": 1, + "trait": "Consumable", + "quality": 1, + "duration": 1, }, { - "Trait": "Heal", - "Quality": 1, - "Duration": 1, + "trait": "Heal", + "quality": 1, + "duration": 1, }, { - "Trait": "Drink", - "Quality": 1, - "Duration": 1, + "trait": "Drink", + "quality": 1, + "duration": 1, }, ] }, 5: { - "ItemName": "Small Star Piece", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Small Star Piece", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Currency", - "Quality": 1, - "Duration": 1, + "trait": "Currency", + "quality": 1, + "duration": 1, }, { - "Trait": "Money", - "Quality": 1, - "Duration": 1, + "trait": "Money", + "quality": 1, + "duration": 1, }, { - "Trait": "Star", - "Quality": 1, - "Duration": 1 + "trait": "Star", + "quality": 1, + "duration": 1 } ] }, 6: { - "ItemName": "Medium Star Piece", - "Amount": 1, - "ItemValue": 30000, - "Traits": [ + "item_name": "Medium Star Piece", + "amount": 1, + "item_value": 30000, + "traits": [ { - "Trait": "Currency", - "Quality": 3, - "Duration": 1, + "trait": "Currency", + "quality": 3, + "duration": 1, }, { - "Trait": "Money", - "Quality": 3, - "Duration": 1, + "trait": "Money", + "quality": 3, + "duration": 1, }, { - "Trait": "Star", - "Quality": 3, - "Duration": 1 + "trait": "Star", + "quality": 3, + "duration": 1 } ] }, 7: { - "ItemName": "Large Star Piece", - "Amount": 1, - "ItemValue": 50000, - "Traits": [ + "item_name": "Large Star Piece", + "amount": 1, + "item_value": 50000, + "traits": [ { - "Trait": "Currency", - "Quality": 5, - "Duration": 1, + "trait": "Currency", + "quality": 5, + "duration": 1, }, { - "Trait": "Money", - "Quality": 5, - "Duration": 1, + "trait": "Money", + "quality": 5, + "duration": 1, }, { - "Trait": "Star", - "Quality": 5, - "Duration": 1 + "trait": "Star", + "quality": 5, + "duration": 1 } ] }, @@ -195,90 +196,90 @@ async def initialize_giftboxes(ctx: "SNIContext", giftbox_key: str, motherbox_ke kdl3_trap_gifts = { 0: { - "ItemName": "Gooey Bag", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Gooey Bag", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Goo", - "Quality": 1, - "Duration": 1, + "trait": "Goo", + "quality": 1, + "duration": 1, }, { - "Trait": "Gel", - "Quality": 1, - "Duration": 1 + "trait": "Gel", + "quality": 1, + "duration": 1 } ] }, 1: { - "ItemName": "Slowness", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Slowness", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Slow", - "Quality": 1, - "Duration": 1, + "trait": "Slow", + "quality": 1, + "duration": 1, }, { - "Trait": "Slowness", - "Quality": 1, - "Duration": 1 + "trait": "Slowness", + "quality": 1, + "duration": 1 } ] }, 2: { - "ItemName": "Eject Ability", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Eject Ability", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Eject", - "Quality": 1, - "Duration": 1, + "trait": "Eject", + "quality": 1, + "duration": 1, }, { - "Trait": "Removal", - "Quality": 1, - "Duration": 1 + "trait": "Removal", + "quality": 1, + "duration": 1 } ] }, 3: { - "ItemName": "Bad Meal", - "Amount": 1, - "ItemValue": 10000, - "Traits": [ + "item_name": "Bad Meal", + "amount": 1, + "item_value": 10000, + "traits": [ { - "Trait": "Trap", - "Quality": 1, - "Duration": 1, + "trait": "Trap", + "quality": 1, + "duration": 1, }, { - "Trait": "Damage", - "Quality": 1, - "Duration": 1, + "trait": "Damage", + "quality": 1, + "duration": 1, }, { - "Trait": "Food", - "Quality": 1, - "Duration": 1 + "trait": "Food", + "quality": 1, + "duration": 1 } ] }, diff --git a/worlds/kdl3/options.py b/worlds/kdl3/options.py index b9163794ad19..77095bfec68b 100644 --- a/worlds/kdl3/options.py +++ b/worlds/kdl3/options.py @@ -289,7 +289,7 @@ class KirbyFlavorPreset(Choice): option_lime = 12 option_lavender = 13 option_miku = 14 - option_custom = 15 + option_custom = -1 default = 0 @classmethod @@ -297,7 +297,7 @@ def from_text(cls, text: str) -> Choice: text = text.lower() if text == "random": choice_list = list(cls.name_lookup) - choice_list.remove(14) + choice_list.remove(-1) return cls(random.choice(choice_list)) return super().from_text(text) @@ -347,7 +347,7 @@ class GooeyFlavorPreset(Choice): option_orange = 11 option_lime = 12 option_lavender = 13 - option_custom = 14 + option_custom = -1 default = 0 @classmethod @@ -355,7 +355,7 @@ def from_text(cls, text: str) -> Choice: text = text.lower() if text == "random": choice_list = list(cls.name_lookup) - choice_list.remove(14) + choice_list.remove(-1) return cls(random.choice(choice_list)) return super().from_text(text) diff --git a/worlds/kdl3/rom.py b/worlds/kdl3/rom.py index 741ea0083027..5f986bc4be0c 100644 --- a/worlds/kdl3/rom.py +++ b/worlds/kdl3/rom.py @@ -7,7 +7,6 @@ import os import struct -import settings from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes, APPatchExtension from .aesthetics import get_palette_bytes, kirby_target_palettes, get_kirby_palette, gooey_target_palettes, \ get_gooey_palette @@ -475,8 +474,7 @@ def patch_rom(world: "KDL3World", patch: KDL3ProcedurePatch) -> None: patch.write_token(APTokenTypes.WRITE, 0x3D016, world.options.ow_boss_requirement.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D018, world.options.consumables.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D01A, world.options.starsanity.value.to_bytes(2, "little")) - patch.write_token(APTokenTypes.WRITE, 0x3D01C, world.options.gifting.value.to_bytes(2, "little") - if world.multiworld.players > 1 else bytes([0, 0])) + patch.write_token(APTokenTypes.WRITE, 0x3D01C, world.options.gifting.value.to_bytes(2, "little")) patch.write_token(APTokenTypes.WRITE, 0x3D01E, world.options.strict_bosses.value.to_bytes(2, "little")) # don't write gifting for solo game, since there's no one to send anything to @@ -594,9 +592,9 @@ def get_base_rom_bytes() -> bytes: def get_base_rom_path(file_name: str = "") -> str: - options: settings.Settings = settings.get_settings() + from . import KDL3World if not file_name: - file_name = options["kdl3_options"]["rom_file"] + file_name = KDL3World.settings.rom_file if not os.path.exists(file_name): file_name = Utils.user_path(file_name) return file_name diff --git a/worlds/kdl3/test/__init__.py b/worlds/kdl3/test/__init__.py index 92f1d7261f1f..46f78aadaa3d 100644 --- a/worlds/kdl3/test/__init__.py +++ b/worlds/kdl3/test/__init__.py @@ -26,13 +26,13 @@ def world_setup(self, seed: typing.Optional[int] = None) -> None: self.multiworld.game[1] = self.game self.multiworld.player_name = {1: "Tester"} self.multiworld.set_seed(seed) - self.multiworld.state = CollectionState(self.multiworld) args = Namespace() for name, option in AutoWorld.AutoWorldRegister.world_types[self.game].options_dataclass.type_hints.items(): setattr(args, name, { 1: option.from_any(self.options.get(name, getattr(option, "default"))) }) self.multiworld.set_options(args) + self.multiworld.state = CollectionState(self.multiworld) self.multiworld.plando_options = PlandoOptions.connections for step in gen_steps: call_all(self.multiworld, step) diff --git a/worlds/kh2/Client.py b/worlds/kh2/Client.py index 96b406c72f2f..5a26231c0cad 100644 --- a/worlds/kh2/Client.py +++ b/worlds/kh2/Client.py @@ -34,7 +34,7 @@ def __init__(self, server_address, password): self.growthlevel = None self.kh2connected = False self.kh2_finished_game = False - self.serverconneced = False + self.serverconnected = False self.item_name_to_data = {name: data for name, data, in item_dictionary_table.items()} self.location_name_to_data = {name: data for name, data, in all_locations.items()} self.kh2_data_package = {} @@ -47,6 +47,8 @@ def __init__(self, server_address, password): self.location_name_to_worlddata = {name: data for name, data, in all_world_locations.items()} self.sending = [] + self.slot_name = None + self.disconnect_from_server = False # list used to keep track of locations+items player has. Used for disoneccting self.kh2_seed_save_cache = { "itemIndex": -1, @@ -185,11 +187,20 @@ async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: await super(KH2Context, self).server_auth(password_requested) await self.get_username() - await self.send_connect() + # if slot name != first time login or previous name + # and seed name is none or saved seed name + if not self.slot_name and not self.kh2seedname: + await self.send_connect() + elif self.slot_name == self.auth and self.kh2seedname: + await self.send_connect() + else: + logger.info(f"You are trying to connect with data still cached in the client. Close client or connect to the correct slot: {self.slot_name}") + self.serverconnected = False + self.disconnect_from_server = True async def connection_closed(self): self.kh2connected = False - self.serverconneced = False + self.serverconnected = False if self.kh2seedname is not None and self.auth is not None: with open(self.kh2_seed_save_path_join, 'w') as f: f.write(json.dumps(self.kh2_seed_save, indent=4)) @@ -197,7 +208,8 @@ async def connection_closed(self): async def disconnect(self, allow_autoreconnect: bool = False): self.kh2connected = False - self.serverconneced = False + self.serverconnected = False + self.locations_checked = [] if self.kh2seedname not in {None} and self.auth not in {None}: with open(self.kh2_seed_save_path_join, 'w') as f: f.write(json.dumps(self.kh2_seed_save, indent=4)) @@ -239,7 +251,15 @@ def kh2_read_string(self, address, length): def on_package(self, cmd: str, args: dict): if cmd == "RoomInfo": - self.kh2seedname = args['seed_name'] + if not self.kh2seedname: + self.kh2seedname = args['seed_name'] + elif self.kh2seedname != args['seed_name']: + self.disconnect_from_server = True + self.serverconnected = False + self.kh2connected = False + logger.info("Connection to the wrong seed, connect to the correct seed or close the client.") + return + self.kh2_seed_save_path = f"kh2save2{self.kh2seedname}{self.auth}.json" self.kh2_seed_save_path_join = os.path.join(self.game_communication_path, self.kh2_seed_save_path) @@ -338,7 +358,7 @@ def on_package(self, cmd: str, args: dict): }, }, } - if start_index > self.kh2_seed_save_cache["itemIndex"] and self.serverconneced: + if start_index > self.kh2_seed_save_cache["itemIndex"] and self.serverconnected: self.kh2_seed_save_cache["itemIndex"] = start_index for item in args['items']: asyncio.create_task(self.give_item(item.item, item.location)) @@ -370,12 +390,14 @@ def connect_to_game(self): if not self.kh2: self.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") self.get_addresses() - +# except Exception as e: if self.kh2connected: self.kh2connected = False logger.info("Game is not open.") - self.serverconneced = True + + self.serverconnected = True + self.slot_name = self.auth def data_package_kh2_cache(self, loc_to_id, item_to_id): self.kh2_loc_name_to_id = loc_to_id @@ -493,23 +515,38 @@ async def verifyLevel(self): async def give_item(self, item, location): try: - # todo: ripout all the itemtype stuff and just have one dictionary. the only thing that needs to be tracked from the server/local is abilites - #sleep so we can get the datapackage and not miss any items that were sent to us while we didnt have our item id dicts + # sleep so we can get the datapackage and not miss any items that were sent to us while we didnt have our item id dicts while not self.lookup_id_to_item: await asyncio.sleep(0.5) itemname = self.lookup_id_to_item[item] itemdata = self.item_name_to_data[itemname] - # itemcode = self.kh2_item_name_to_id[itemname] if itemdata.ability: if location in self.all_weapon_location_id: return + # growth have reserved ability slots because of how the goa handles them if itemname in {"High Jump", "Quick Run", "Dodge Roll", "Aerial Dodge", "Glide"}: self.kh2_seed_save_cache["AmountInvo"]["Growth"][itemname] += 1 return if itemname not in self.kh2_seed_save_cache["AmountInvo"]["Ability"]: self.kh2_seed_save_cache["AmountInvo"]["Ability"][itemname] = [] - # appending the slot that the ability should be in + # appending the slot that the ability should be in + # abilities have a limit amount of slots. + # we start from the back going down to not mess with stuff. + # Front of Invo + # Sora: Save+24F0+0x54 : 0x2546 + # Donald: Save+2604+0x54 : 0x2658 + # Goofy: Save+2718+0x54 : 0x276C + # Back of Invo. Sora has 6 ability slots that are reserved + # Sora: Save+24F0+0x54+0x92 : 0x25D8 + # Donald: Save+2604+0x54+0x9C : 0x26F4 + # Goofy: Save+2718+0x54+0x9C : 0x2808 + # seed has 2 scans in sora's abilities + # recieved second scan + # if len(seed_save(Scan:[ability slot 52]) < (2)amount of that ability they should have from slot data + # ability_slot = back of inventory that isnt taken + # add ability_slot to seed_save(Scan[]) so now its Scan:[ability slot 52,50] + # decrease back of inventory since its ability_slot is already taken if len(self.kh2_seed_save_cache["AmountInvo"]["Ability"][itemname]) < \ self.AbilityQuantityDict[itemname]: if itemname in self.sora_ability_set: @@ -528,18 +565,21 @@ async def give_item(self, item, location): if ability_slot in self.front_ability_slots: self.front_ability_slots.remove(ability_slot) + # if itemdata in {bitmask} all the forms,summons and a few other things are bitmasks elif itemdata.memaddr in {0x36C4, 0x36C5, 0x36C6, 0x36C0, 0x36CA}: # if memaddr is in a bitmask location in memory if itemname not in self.kh2_seed_save_cache["AmountInvo"]["Bitmask"]: self.kh2_seed_save_cache["AmountInvo"]["Bitmask"].append(itemname) + # if itemdata in {magic} elif itemdata.memaddr in {0x3594, 0x3595, 0x3596, 0x3597, 0x35CF, 0x35D0}: - # if memaddr is in magic addresses self.kh2_seed_save_cache["AmountInvo"]["Magic"][itemname] += 1 + # equipment is a list instead of dict because you can only have 1 currently elif itemname in self.all_equipment: self.kh2_seed_save_cache["AmountInvo"]["Equipment"].append(itemname) + # weapons are done differently since you can only have one and has to check it differently elif itemname in self.all_weapons: if itemname in self.keyblade_set: self.kh2_seed_save_cache["AmountInvo"]["Weapon"]["Sora"].append(itemname) @@ -548,9 +588,11 @@ async def give_item(self, item, location): else: self.kh2_seed_save_cache["AmountInvo"]["Weapon"]["Goofy"].append(itemname) + # TODO: this can just be removed and put into the else below it elif itemname in self.stat_increase_set: self.kh2_seed_save_cache["AmountInvo"]["StatIncrease"][itemname] += 1 else: + # "normal" items. They have a unique byte reserved for how many they have if itemname in self.kh2_seed_save_cache["AmountInvo"]["Amount"]: self.kh2_seed_save_cache["AmountInvo"]["Amount"][itemname] += 1 else: @@ -930,7 +972,7 @@ def finishedGame(ctx: KH2Context): async def kh2_watcher(ctx: KH2Context): while not ctx.exit_event.is_set(): try: - if ctx.kh2connected and ctx.serverconneced: + if ctx.kh2connected and ctx.serverconnected: ctx.sending = [] await asyncio.create_task(ctx.checkWorldLocations()) await asyncio.create_task(ctx.checkLevels()) @@ -944,13 +986,19 @@ async def kh2_watcher(ctx: KH2Context): if ctx.sending: message = [{"cmd": 'LocationChecks', "locations": ctx.sending}] await ctx.send_msgs(message) - elif not ctx.kh2connected and ctx.serverconneced: - logger.info("Game Connection lost. waiting 15 seconds until trying to reconnect.") + elif not ctx.kh2connected and ctx.serverconnected: + logger.info("Game Connection lost. trying to reconnect.") ctx.kh2 = None - while not ctx.kh2connected and ctx.serverconneced: - await asyncio.sleep(15) - ctx.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") - ctx.get_addresses() + while not ctx.kh2connected and ctx.serverconnected: + try: + ctx.kh2 = pymem.Pymem(process_name="KINGDOM HEARTS II FINAL MIX") + ctx.get_addresses() + logger.info("Game Connection Established.") + except Exception as e: + await asyncio.sleep(5) + if ctx.disconnect_from_server: + ctx.disconnect_from_server = False + await ctx.disconnect() except Exception as e: if ctx.kh2connected: ctx.kh2connected = False diff --git a/worlds/kh2/OpenKH.py b/worlds/kh2/OpenKH.py index 7226525d0c4b..7c67fc07def4 100644 --- a/worlds/kh2/OpenKH.py +++ b/worlds/kh2/OpenKH.py @@ -8,11 +8,12 @@ from .Items import item_dictionary_table from .Locations import all_locations, SoraLevels, exclusion_table from .XPValues import lvlStats, formExp, soraExp -from worlds.Files import APContainer +from worlds.Files import APPlayerContainer -class KH2Container(APContainer): +class KH2Container(APPlayerContainer): game: str = 'Kingdom Hearts 2' + patch_file_ending = ".zip" def __init__(self, patch_data: dict, base_path: str, output_directory: str, player=None, player_name: str = "", server: str = ""): diff --git a/worlds/kh2/__init__.py b/worlds/kh2/__init__.py index edc4305accaf..19c2aee61f12 100644 --- a/worlds/kh2/__init__.py +++ b/worlds/kh2/__init__.py @@ -277,9 +277,7 @@ def generate_early(self) -> None: if self.options.FillerItemsLocal: for item in filler_items: self.options.local_items.value.add(item) - # By imitating remote this doesn't have to be plandoded filler anymore - # for location in {LocationName.JunkMedal, LocationName.JunkMedal}: - # self.plando_locations[location] = random_stt_item + if not self.options.SummonLevelLocationToggle: self.total_locations -= 6 @@ -400,6 +398,8 @@ def goofy_pre_fill(self): # plando goofy get bonuses goofy_get_bonus_location_pool = [self.multiworld.get_location(location, self.player) for location in Goofy_Checks.keys() if Goofy_Checks[location].yml != "Keyblade"] + if len(goofy_get_bonus_location_pool) > len(self.goofy_get_bonus_abilities): + raise Exception(f"Too little abilities to fill goofy get bonus locations for player {self.player_name}.") for location in goofy_get_bonus_location_pool: self.random.choice(self.goofy_get_bonus_abilities) random_ability = self.random.choice(self.goofy_get_bonus_abilities) @@ -416,11 +416,12 @@ def donald_pre_fill(self): random_ability = self.random.choice(self.donald_weapon_abilities) location.place_locked_item(random_ability) self.donald_weapon_abilities.remove(random_ability) - + # if option is turned off if not self.options.DonaldGoofyStatsanity: - # plando goofy get bonuses donald_get_bonus_location_pool = [self.multiworld.get_location(location, self.player) for location in Donald_Checks.keys() if Donald_Checks[location].yml != "Keyblade"] + if len(donald_get_bonus_location_pool) > len(self.donald_get_bonus_abilities): + raise Exception(f"Too little abilities to fill donald get bonus locations for player {self.player_name}.") for location in donald_get_bonus_location_pool: random_ability = self.random.choice(self.donald_get_bonus_abilities) location.place_locked_item(random_ability) @@ -436,6 +437,10 @@ def keyblade_pre_fill(self): for location in keyblade_locations: location.locked = True + def get_pre_fill_items(self) -> List["Item"]: + return [self.create_item(item) for item in [*DonaldAbility_Table.keys(), *GoofyAbility_Table.keys(), + *SupportAbility_Table.keys()]] + def starting_invo_verify(self): """ Making sure the player doesn't put too many abilities in their starting inventory. diff --git a/worlds/ladx/ItemTracker.py b/worlds/ladx/ItemTracker.py index b288bba84339..981fd42d2aaa 100644 --- a/worlds/ladx/ItemTracker.py +++ b/worlds/ladx/ItemTracker.py @@ -151,8 +151,7 @@ class ItemTracker: def __init__(self, gameboy) -> None: self.gameboy = gameboy self.loadItems() - pass - extraItems = {} + self.extraItems = {} async def readRamByte(self, byte): return (await self.gameboy.read_memory_cache([byte]))[byte] diff --git a/worlds/ladx/LADXR/patches/marin.txt b/worlds/ladx/LADXR/patches/marin.txt index 3634014afe23..782f4129ce6e 100644 --- a/worlds/ladx/LADXR/patches/marin.txt +++ b/worlds/ladx/LADXR/patches/marin.txt @@ -220,7 +220,6 @@ To this day I still don't know if we inconvenienced the Mad Batter or not. Oh, hi ##### People forgot I was playable in Hyrule Warriors Join our Discord. Or else. -Also try Minecraft! I see you're finally awake... OwO This is Todd Howard, and today I'm pleased to announce... The Elder Scrolls V: Skyrim for the Nintendo Game Boy Color! @@ -256,7 +255,6 @@ Try Bumper Stickers! Try Castlevania 64! Try Celeste 64! Try ChecksFinder! -Try Clique! Try Dark Souls III! Try DLCQuest! Try Donkey Kong Country 3! @@ -269,6 +267,7 @@ Try A Hat in Time! Try Heretic! Try Hollow Knight! Try Hylics 2! +Try Jak and Daxter: The Precursor Legacy! Try Kingdom Hearts 2! Try Kirby's Dream Land 3! Try Landstalker - The Treasures of King Nole! @@ -281,7 +280,6 @@ Try Mario & Luigi Superstar Saga! Try MegaMan Battle Network 3! Try Meritous! Try The Messenger! -Try Minecraft! Try Muse Dash! Try Noita! Try Ocarina of Time! @@ -290,11 +288,10 @@ Try Pokemon Emerald! Try Pokemon Red and Blue! Try Raft! Try Risk of Rain 2! -Try Rogue Legacy! Try Secret of Evermore! +Try shapez! Try Shivers! Try A Short Hike! -Try Slay the Spire! Try SMZ3! Try Sonic Adventure 2 Battle! Try Starcraft 2! @@ -302,6 +299,7 @@ Try Stardew Valley! Try Subnautica! Try Sudoku! Try Super Mario 64! +Try Super Mario Land 2: 6 Golden Coins! Try Super Mario World! Try Super Metroid! Try Terraria! @@ -314,7 +312,6 @@ Try The Witness! Try Yoshi's Island! Try Yu-Gi-Oh! 2006! Try Zillion! -Try Zork Grand Inquisitor! Try Old School Runescape! Try Kingdom Hearts! Try Mega Man 2! @@ -371,7 +368,6 @@ Have they added Among Us to AP yet? Every copy of LADX is personalized, David. Looks like you're going on A Short Hike. Bring back feathers please? Functioning Brain is at...\nWait. This isn't Witness. Wrong game, sorry. -Don't forget to check your Clique!\nIf, y'know, you have one. No pressure... :3 Sorry ######, but your progression item is in another world. &newgames\n&oldgames diff --git a/worlds/ladx/__init__.py b/worlds/ladx/__init__.py index 78ae1ce8ad20..b1b033e01d23 100644 --- a/worlds/ladx/__init__.py +++ b/worlds/ladx/__init__.py @@ -335,7 +335,9 @@ def opens_new_regions(item): start_item = next((item for item in start_items if opens_new_regions(item)), None) if start_item: - itempool.remove(start_item) + # Make sure we're removing the same copy of the item that we're placing + # (.remove checks __eq__, which could be a different copy, so we find the first index and use .pop) + start_item = itempool.pop(itempool.index(start_item)) start_loc.place_locked_item(start_item) else: logging.getLogger("Link's Awakening Logger").warning(f"No {self.options.tarins_gift.current_option_name} available for Tarin's Gift.") diff --git a/worlds/ladx/test/testShop.py b/worlds/ladx/test/testShop.py index 91d504d521b4..a28ba39b2f7c 100644 --- a/worlds/ladx/test/testShop.py +++ b/worlds/ladx/test/testShop.py @@ -1,6 +1,7 @@ from typing import Optional -from Fill import distribute_planned +from Fill import parse_planned_blocks, distribute_planned_blocks, resolve_early_locations_for_planned +from Options import PlandoItems from test.general import setup_solo_multiworld from worlds.AutoWorld import call_all from . import LADXTestBase @@ -19,14 +20,17 @@ class PlandoTest(LADXTestBase): ], }], } - + def world_setup(self, seed: Optional[int] = None) -> None: self.multiworld = setup_solo_multiworld( LinksAwakeningWorld, ("generate_early", "create_regions", "create_items", "set_rules", "generate_basic") ) - self.multiworld.plando_items[1] = self.options["plando_items"] - distribute_planned(self.multiworld) + self.multiworld.worlds[1].options.plando_items = PlandoItems.from_any(self.options["plando_items"]) + self.multiworld.plando_item_blocks = parse_planned_blocks(self.multiworld) + resolve_early_locations_for_planned(self.multiworld) + distribute_planned_blocks(self.multiworld, [x for player in self.multiworld.plando_item_blocks + for x in self.multiworld.plando_item_blocks[player]]) call_all(self.multiworld, "pre_fill") def test_planned(self): diff --git a/worlds/lingo/data/LL1.yaml b/worlds/lingo/data/LL1.yaml index 6410ffea3bd4..4c41f3236f62 100644 --- a/worlds/lingo/data/LL1.yaml +++ b/worlds/lingo/data/LL1.yaml @@ -4956,10 +4956,16 @@ Outside The Initiated: room: Art Gallery door: Exit - The Bearer (East): True - The Bearer (North): True - The Bearer (South): True - The Bearer (West): True + The Bearer (East): + static_painting: True + The Bearer (North): + static_painting: True + The Bearer (South): + static_painting: True + The Bearer (West): + - static_painting: True + - room: The Bearer (West) + door: Side Area Shortcut Roof: True panels: Achievement: @@ -5053,7 +5059,8 @@ - MIDDLE The Bearer (East): entrances: - Cross Tower (East): True + Cross Tower (East): + static_painting: True Bearer Side Area: door: Side Area Access Roof: True @@ -5084,7 +5091,8 @@ panel: SPACE The Bearer (North): entrances: - Cross Tower (East): True + Cross Tower (North): + static_painting: True Roof: True panels: SILENT (1): @@ -5128,7 +5136,8 @@ panel: POTS The Bearer (South): entrances: - Cross Tower (North): True + Cross Tower (South): + static_painting: True Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5162,7 +5171,10 @@ panel: SILENT (1) The Bearer (West): entrances: - Cross Tower (West): True + Cross Tower (West): + static_painting: True + The Bearer: + door: Side Area Shortcut Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5235,6 +5247,7 @@ The Bearer: room: The Bearer door: East Entrance + static_painting: True Roof: True panels: WINTER: @@ -5250,6 +5263,7 @@ The Bearer (East): room: The Bearer (East) door: North Entrance + static_painting: True Roof: True panels: NORTH: @@ -5270,6 +5284,7 @@ The Bearer (North): room: The Bearer (North) door: South Entrance + static_painting: True panels: FIRE: id: Cross Room/Panel_fire_fire @@ -5284,6 +5299,7 @@ Bearer Side Area: room: Bearer Side Area door: West Entrance + static_painting: True Roof: True panels: DIAMONDS: @@ -7108,6 +7124,8 @@ entrances: Orange Tower Third Floor: warp: True + Art Gallery (First Floor): + warp: True Art Gallery (Second Floor): warp: True Art Gallery (Third Floor): @@ -7125,22 +7143,6 @@ required_door: room: Number Hunt door: Eights - EON: - id: Painting Room/Panel_eon_one - colors: yellow - tag: midyellow - TRUSTWORTHY: - id: Painting Room/Panel_to_two - colors: red - tag: midred - FREE: - id: Painting Room/Panel_free_three - colors: purple - tag: midpurp - OUR: - id: Painting Room/Panel_our_four - colors: blue - tag: midblue ORDER: id: Painting Room/Panel_order_onepathmanyturns tag: forbid @@ -7159,15 +7161,8 @@ - scenery_painting_2c skip_location: True panels: - - EON - First Floor Puzzles: - skip_item: True - location_name: Art Gallery - First Floor Puzzles - panels: - - EON - - TRUSTWORTHY - - FREE - - OUR + - room: Art Gallery (First Floor) + panel: EON Third Floor: painting_id: - scenery_painting_3b @@ -7227,11 +7222,42 @@ - Third Floor - Fourth Floor - Fifth Floor + Art Gallery (First Floor): + entrances: + Art Gallery: + static_painting: True + panels: + EON: + id: Painting Room/Panel_eon_one + colors: yellow + tag: midyellow + TRUSTWORTHY: + id: Painting Room/Panel_to_two + colors: red + tag: midred + FREE: + id: Painting Room/Panel_free_three + colors: purple + tag: midpurp + OUR: + id: Painting Room/Panel_our_four + colors: blue + tag: midblue + doors: + Puzzles: + skip_item: True + location_name: Art Gallery - First Floor Puzzles + panels: + - EON + - TRUSTWORTHY + - FREE + - OUR Art Gallery (Second Floor): entrances: Art Gallery: room: Art Gallery door: Second Floor + static_painting: True panels: HOUSE: id: Painting Room/Panel_house_neighborhood @@ -7263,6 +7289,7 @@ Art Gallery: room: Art Gallery door: Third Floor + static_painting: True panels: AN: id: Painting Room/Panel_an_many @@ -7294,6 +7321,7 @@ Art Gallery: room: Art Gallery door: Fourth Floor + static_painting: True panels: URNS: id: Painting Room/Panel_urns_turns diff --git a/worlds/lingo/data/generated.dat b/worlds/lingo/data/generated.dat index 14f5570db1d1..f5eb3e069927 100644 Binary files a/worlds/lingo/data/generated.dat and b/worlds/lingo/data/generated.dat differ diff --git a/worlds/lingo/data/ids.yaml b/worlds/lingo/data/ids.yaml index 0a43592d3fc2..c30a21e6c8c2 100644 --- a/worlds/lingo/data/ids.yaml +++ b/worlds/lingo/data/ids.yaml @@ -727,11 +727,12 @@ panels: WANDER: 444975 Art Gallery: EIGHT: 444976 + ORDER: 444981 + Art Gallery (First Floor): EON: 444977 TRUSTWORTHY: 444978 FREE: 444979 OUR: 444980 - ORDER: 444981 Art Gallery (Second Floor): HOUSE: 444982 PATH: 444983 @@ -1382,8 +1383,6 @@ doors: Art Gallery: Second Floor: item: 444558 - First Floor Puzzles: - location: 445256 Third Floor: item: 444559 Fourth Floor: @@ -1393,6 +1392,9 @@ doors: Exit: item: 444562 location: 444981 + Art Gallery (First Floor): + Puzzles: + location: 445256 Art Gallery (Second Floor): Puzzles: location: 445257 diff --git a/worlds/lingo/datatypes.py b/worlds/lingo/datatypes.py index 9521422ab154..961f9222022d 100644 --- a/worlds/lingo/datatypes.py +++ b/worlds/lingo/datatypes.py @@ -23,6 +23,7 @@ class EntranceType(Flag): SUNWARP = auto() WARP = auto() CROSSROADS_ROOF_ACCESS = auto() + STATIC_PAINTING = auto() class RoomEntrance(NamedTuple): diff --git a/worlds/lingo/regions.py b/worlds/lingo/regions.py index 9773f22d9196..e029513a3311 100644 --- a/worlds/lingo/regions.py +++ b/worlds/lingo/regions.py @@ -30,7 +30,7 @@ def is_acceptable_pilgrimage_entrance(entrance_type: EntranceType, world: "Lingo allowed_entrance_types = EntranceType.NORMAL if world.options.pilgrimage_allows_paintings: - allowed_entrance_types |= EntranceType.PAINTING + allowed_entrance_types |= EntranceType.PAINTING | EntranceType.STATIC_PAINTING if world.options.pilgrimage_allows_roof_access: allowed_entrance_types |= EntranceType.CROSSROADS_ROOF_ACCESS @@ -105,7 +105,8 @@ def create_regions(world: "LingoWorld") -> None: regions[pilgrimage_region_name] = Region(pilgrimage_region_name, world.player, world.multiworld) # Connect all created regions now that they exist. - allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS + allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS | \ + EntranceType.STATIC_PAINTING if not painting_shuffle: # Don't use the vanilla painting connections if we are shuffling paintings. @@ -156,11 +157,11 @@ def create_regions(world: "LingoWorld") -> None: regions[from_room].connect(regions[to_room], f"Pilgrimage Part {i+1}") else: connect_entrance(regions, regions["Starting Room"], regions["Pilgrim Antechamber"], "Sun Painting", - RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.PAINTING, False, world) + RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.STATIC_PAINTING, False, world) if early_color_hallways: connect_entrance(regions, regions["Starting Room"], regions["Color Hallways"], "Early Color Hallways", - None, EntranceType.PAINTING, False, world) + None, EntranceType.STATIC_PAINTING, False, world) if painting_shuffle: for warp_enter, warp_exit in world.player_logic.painting_mapping.items(): diff --git a/worlds/lingo/utils/pickle_static_data.py b/worlds/lingo/utils/pickle_static_data.py index 740e129bcb6c..7f39b798367e 100644 --- a/worlds/lingo/utils/pickle_static_data.py +++ b/worlds/lingo/utils/pickle_static_data.py @@ -138,6 +138,8 @@ def process_single_entrance(source_room: str, room_name: str, door_obj) -> RoomE entrance_type = EntranceType.WARP elif source_room == "Crossroads" and room_name == "Roof": entrance_type = EntranceType.CROSSROADS_ROOF_ACCESS + elif "static_painting" in door_obj and door_obj["static_painting"]: + entrance_type = EntranceType.STATIC_PAINTING if "painting" in door_obj and door_obj["painting"]: PAINTING_EXIT_ROOMS.add(room_name) diff --git a/worlds/lingo/utils/validate_config.rb b/worlds/lingo/utils/validate_config.rb index 2a765fbcad00..e2704226849f 100644 --- a/worlds/lingo/utils/validate_config.rb +++ b/worlds/lingo/utils/validate_config.rb @@ -2,7 +2,7 @@ # the file are consistent. It also checks that the panel and door IDs mentioned # all exist in the map file. # -# Usage: validate_config.rb [config file] [map file] +# Usage: validate_config.rb [config file] [ids path] [map file] require 'set' require 'yaml' diff --git a/worlds/lufia2ac/test/__init__.py b/worlds/lufia2ac/test/__init__.py index 306ffa771660..e69de29bb2d1 100644 --- a/worlds/lufia2ac/test/__init__.py +++ b/worlds/lufia2ac/test/__init__.py @@ -1,5 +0,0 @@ -from test.bases import WorldTestBase - - -class L2ACTestBase(WorldTestBase): - game = "Lufia II Ancient Cave" diff --git a/worlds/lufia2ac/test/bases.py b/worlds/lufia2ac/test/bases.py new file mode 100644 index 000000000000..306ffa771660 --- /dev/null +++ b/worlds/lufia2ac/test/bases.py @@ -0,0 +1,5 @@ +from test.bases import WorldTestBase + + +class L2ACTestBase(WorldTestBase): + game = "Lufia II Ancient Cave" diff --git a/worlds/lufia2ac/test/TestCustomItemPool.py b/worlds/lufia2ac/test/test_custom_item_pool.py similarity index 98% rename from worlds/lufia2ac/test/TestCustomItemPool.py rename to worlds/lufia2ac/test/test_custom_item_pool.py index 33f72273daae..2244b03f296b 100644 --- a/worlds/lufia2ac/test/TestCustomItemPool.py +++ b/worlds/lufia2ac/test/test_custom_item_pool.py @@ -2,7 +2,7 @@ from BaseClasses import PlandoOptions from Generate import handle_option -from . import L2ACTestBase +from .bases import L2ACTestBase from ..Options import CustomItemPool diff --git a/worlds/lufia2ac/test/TestGoal.py b/worlds/lufia2ac/test/test_goal.py similarity index 98% rename from worlds/lufia2ac/test/TestGoal.py rename to worlds/lufia2ac/test/test_goal.py index 1eaf5a151584..deb98ccac9c0 100644 --- a/worlds/lufia2ac/test/TestGoal.py +++ b/worlds/lufia2ac/test/test_goal.py @@ -1,4 +1,4 @@ -from . import L2ACTestBase +from .bases import L2ACTestBase class TestDefault(L2ACTestBase): diff --git a/worlds/marioland2/LICENSE b/worlds/marioland2/LICENSE new file mode 100644 index 000000000000..7ac515f432f1 --- /dev/null +++ b/worlds/marioland2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2023 Alex "Alchav" Avery + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/worlds/marioland2/__init__.py b/worlds/marioland2/__init__.py new file mode 100644 index 000000000000..ea1354db6e65 --- /dev/null +++ b/worlds/marioland2/__init__.py @@ -0,0 +1,449 @@ +import base64 +import Utils +import settings +from copy import deepcopy + +from worlds.AutoWorld import World, WebWorld +from BaseClasses import Region, Location, Item, ItemClassification, Tutorial + +from . import client +from .rom import generate_output, SuperMarioLand2ProcedurePatch +from .options import SML2Options +from .locations import (locations, location_name_to_id, level_name_to_id, level_id_to_name, START_IDS, coins_coords, + auto_scroll_max) +from .items import items +from .sprites import level_sprites +from .sprite_randomizer import randomize_enemies, randomize_platforms +from .logic import has_pipe_up, has_pipe_down, has_pipe_left, has_pipe_right, has_level_progression, is_auto_scroll +from . import logic + + +class MarioLand2Settings(settings.Group): + class SML2RomFile(settings.UserFilePath): + """File name of the Super Mario Land 2 1.0 ROM""" + description = "Super Mario Land 2 - 6 Golden Coins (USA, Europe) 1.0 ROM File" + copy_to = "Super Mario Land 2 - 6 Golden Coins (USA, Europe).gb" + md5s = [SuperMarioLand2ProcedurePatch.hash] + + rom_file: SML2RomFile = SML2RomFile(SML2RomFile.copy_to) + + +class MarioLand2WebWorld(WebWorld): + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to playing Super Mario Land 2 with Archipelago.", + "English", + "setup_en.md", + "setup/en", + ["Alchav"] + ) + + tutorials = [setup_en] + + +class MarioLand2World(World): + """Super Mario Land 2 is a classic platformer that follows Mario on a quest to reclaim his castle from the + villainous Wario. This iconic game features 32 levels, unique power-ups, and introduces Wario as Mario's + arch-rival.""" # -ChatGPT + + game = "Super Mario Land 2" + + settings_key = "sml2_options" + settings: MarioLand2Settings + + location_name_to_id = location_name_to_id + item_name_to_id = {item_name: ID for ID, item_name in enumerate(items, START_IDS)} + + web = MarioLand2WebWorld() + + item_name_groups = { + "Level Progression": { + item_name for item_name in items if item_name.endswith(("Progression", "Secret", "Secret 1", "Secret 2")) + and "Auto Scroll" not in item_name + }, + "Bells": {item_name for item_name in items if "Bell" in item_name}, + "Golden Coins": {"Mario Coin", "Macro Coin", "Space Coin", "Tree Coin", "Turtle Coin", "Pumpkin Coin"}, + "Coins": {"1 Coin", *{f"{i} Coins" for i in range(2, 169)}}, + "Powerups": {"Mushroom", "Fire Flower", "Carrot"}, + "Difficulties": {"Easy Mode", "Normal Mode"}, + "Auto Scroll Traps": {item_name for item_name in items + if "Auto Scroll" in item_name and "Cancel" not in item_name}, + "Cancel Auto Scrolls": {item_name for item_name in items if "Cancel Auto Scroll" in item_name}, + } + + location_name_groups = { + "Bosses": { + "Tree Zone 5 - Boss", "Space Zone 2 - Boss", "Macro Zone 4 - Boss", + "Pumpkin Zone 4 - Boss", "Mario Zone 4 - Boss", "Turtle Zone 3 - Boss" + }, + "Normal Exits": {location for location in locations if locations[location]["type"] == "level"}, + "Secret Exits": {location for location in locations if locations[location]["type"] == "secret"}, + "Bells": {location for location in locations if locations[location]["type"] == "bell"}, + "Coins": {location for location in location_name_to_id if "Coin" in location} + } + + options_dataclass = SML2Options + options: SML2Options + + generate_output = generate_output + + def __init__(self, world, player: int): + super().__init__(world, player) + self.auto_scroll_levels = [] + self.num_coin_locations = [] + self.max_coin_locations = {} + self.sprite_data = {} + self.coin_fragments_required = 0 + + def generate_early(self): + self.sprite_data = deepcopy(level_sprites) + if self.options.randomize_enemies: + randomize_enemies(self.sprite_data, self.random) + if self.options.randomize_platforms: + randomize_platforms(self.sprite_data, self.random) + + if self.options.marios_castle_midway_bell: + self.sprite_data["Mario's Castle"][35]["sprite"] = "Midway Bell" + + if self.options.auto_scroll_chances == "vanilla": + self.auto_scroll_levels = [int(i in [19, 25, 30]) for i in range(32)] + else: + self.auto_scroll_levels = [int(self.random.randint(1, 100) <= self.options.auto_scroll_chances) + for _ in range(32)] + + self.auto_scroll_levels[level_name_to_id["Mario's Castle"]] = 0 + unbeatable_scroll_levels = ["Tree Zone 3", "Macro Zone 2", "Space Zone 1", "Turtle Zone 2", "Pumpkin Zone 2"] + if not self.options.shuffle_midway_bells: + unbeatable_scroll_levels.append("Pumpkin Zone 1") + for level, i in enumerate(self.auto_scroll_levels): + if i == 1: + if self.options.auto_scroll_mode in ("global_cancel_item", "level_cancel_items"): + self.auto_scroll_levels[level] = 2 + elif self.options.auto_scroll_mode == "chaos": + if (self.options.accessibility == "full" + and level_id_to_name[level] in unbeatable_scroll_levels): + self.auto_scroll_levels[level] = 2 + else: + self.auto_scroll_levels[level] = self.random.randint(1, 3) + elif (self.options.accessibility == "full" + and level_id_to_name[level] in unbeatable_scroll_levels): + self.auto_scroll_levels[level] = 0 + if self.auto_scroll_levels[level] == 1 and "trap" in self.options.auto_scroll_mode.current_key: + self.auto_scroll_levels[level] = 3 + + def create_regions(self): + menu_region = Region("Menu", self.player, self.multiworld) + self.multiworld.regions.append(menu_region) + created_regions = [] + for location_name, data in locations.items(): + region_name = location_name.split(" -")[0] + if region_name in created_regions: + region = self.multiworld.get_region(region_name, self.player) + else: + region = Region(region_name, self.player, self.multiworld) + if region_name == "Tree Zone Secret Course": + region_to_connect = self.multiworld.get_region("Tree Zone 2", self.player) + elif region_name == "Space Zone Secret Course": + region_to_connect = self.multiworld.get_region("Space Zone 1", self.player) + elif region_name == "Macro Zone Secret Course": + region_to_connect = self.multiworld.get_region("Macro Zone 1", self.player) + elif region_name == "Pumpkin Zone Secret Course 1": + region_to_connect = self.multiworld.get_region("Pumpkin Zone 2", self.player) + elif region_name == "Pumpkin Zone Secret Course 2": + region_to_connect = self.multiworld.get_region("Pumpkin Zone 3", self.player) + elif region_name == "Turtle Zone Secret Course": + region_to_connect = self.multiworld.get_region("Turtle Zone 2", self.player) + elif region_name.split(" ")[-1].isdigit() and int(region_name.split(" ")[-1]) > 1: + region_to_connect = self.multiworld.get_region(" ".join(region_name.split(" ")[:2]) + + f" {int(region_name.split(' ')[2]) - 1}", + self.player) + else: + region_to_connect = menu_region + region_to_connect.connect(region) + self.multiworld.regions.append(region) + created_regions.append(region_name) + + if location_name == "Mario's Castle - Midway Bell" and not self.options.marios_castle_midway_bell: + continue + region.locations.append(MarioLand2Location(self.player, location_name, + self.location_name_to_id[location_name], region)) + self.multiworld.get_region("Macro Zone Secret Course", self.player).connect( + self.multiworld.get_region("Macro Zone 4", self.player)) + self.multiworld.get_region("Macro Zone 4", self.player).connect( + self.multiworld.get_region("Macro Zone Secret Course", self.player)) + + castle = self.multiworld.get_region("Mario's Castle", self.player) + wario = MarioLand2Location(self.player, "Mario's Castle - Wario", parent=castle) + castle.locations.append(wario) + wario.place_locked_item(MarioLand2Item("Wario Defeated", ItemClassification.progression, None, self.player)) + + if self.options.coinsanity: + coinsanity_checks = self.options.coinsanity_checks.value + self.num_coin_locations = [[region, 1] for region in created_regions if region != "Mario's Castle"] + self.max_coin_locations = {region: len(coins_coords[region]) for region in created_regions + if region != "Mario's Castle"} + if self.options.accessibility == "full" or self.options.auto_scroll_mode == "always": + for level in self.max_coin_locations: + if level in auto_scroll_max and self.auto_scroll_levels[level_name_to_id[level]] in (1, 3): + if isinstance(auto_scroll_max[level], tuple): + self.max_coin_locations[level] = min( + auto_scroll_max[level][int(self.options.shuffle_midway_bells.value)], + self.max_coin_locations[level]) + else: + self.max_coin_locations[level] = min(auto_scroll_max[level], self.max_coin_locations[level]) + coinsanity_checks = min(sum(self.max_coin_locations.values()), coinsanity_checks) + for i in range(coinsanity_checks - 31): + self.num_coin_locations.sort(key=lambda region: self.max_coin_locations[region[0]] / region[1]) + self.num_coin_locations[-1][1] += 1 + coin_locations = [] + for level, coins in self.num_coin_locations: + if self.max_coin_locations[level]: + coin_thresholds = self.random.sample(range(1, self.max_coin_locations[level] + 1), coins) + coin_locations += [f"{level} - {i} Coin{'s' if i > 1 else ''}" for i in coin_thresholds] + for location_name in coin_locations: + region = self.multiworld.get_region(location_name.split(" -")[0], self.player) + region.locations.append(MarioLand2Location(self.player, location_name, + self.location_name_to_id[location_name], parent=region)) + + def set_rules(self): + entrance_rules = { + "Menu -> Space Zone 1": lambda state: state.has("Hippo Bubble", self.player) + or (state.has("Carrot", self.player) + and not is_auto_scroll(state, self.player, "Hippo Zone")), + "Space Zone 1 -> Space Zone Secret Course": lambda state: state.has("Space Zone Secret", self.player), + "Space Zone 1 -> Space Zone 2": lambda state: has_level_progression(state, "Space Zone Progression", self.player), + "Tree Zone 1 -> Tree Zone 2": lambda state: has_level_progression(state, "Tree Zone Progression", self.player), + "Tree Zone 2 -> Tree Zone Secret Course": lambda state: state.has("Tree Zone Secret", self.player), + "Tree Zone 2 -> Tree Zone 3": lambda state: has_level_progression(state, "Tree Zone Progression", self.player, 2), + "Tree Zone 4 -> Tree Zone 5": lambda state: has_level_progression(state, "Tree Zone Progression", self.player, 3), + "Macro Zone 1 -> Macro Zone Secret Course": lambda state: state.has("Macro Zone Secret 1", self.player), + "Macro Zone Secret Course -> Macro Zone 4": lambda state: state.has("Macro Zone Secret 2", self.player), + "Macro Zone 1 -> Macro Zone 2": lambda state: has_level_progression(state, "Macro Zone Progression", self.player), + "Macro Zone 2 -> Macro Zone 3": lambda state: has_level_progression(state, "Macro Zone Progression", self.player, 2), + "Macro Zone 3 -> Macro Zone 4": lambda state: has_level_progression(state, "Macro Zone Progression", self.player, 3), + "Macro Zone 4 -> Macro Zone Secret Course": lambda state: state.has("Macro Zone Secret 2", self.player), + "Pumpkin Zone 1 -> Pumpkin Zone 2": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player), + "Pumpkin Zone 2 -> Pumpkin Zone Secret Course 1": lambda state: state.has("Pumpkin Zone Secret 1", self.player), + "Pumpkin Zone 2 -> Pumpkin Zone 3": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player, 2), + "Pumpkin Zone 3 -> Pumpkin Zone Secret Course 2": lambda state: state.has("Pumpkin Zone Secret 2", self.player), + "Pumpkin Zone 3 -> Pumpkin Zone 4": lambda state: has_level_progression(state, "Pumpkin Zone Progression", self.player, 3), + "Mario Zone 1 -> Mario Zone 2": lambda state: has_level_progression(state, "Mario Zone Progression", self.player), + "Mario Zone 2 -> Mario Zone 3": lambda state: has_level_progression(state, "Mario Zone Progression", self.player, 2), + "Mario Zone 3 -> Mario Zone 4": lambda state: has_level_progression(state, "Mario Zone Progression", self.player, 3), + "Turtle Zone 1 -> Turtle Zone 2": lambda state: has_level_progression(state, "Turtle Zone Progression", self.player), + "Turtle Zone 2 -> Turtle Zone Secret Course": lambda state: state.has("Turtle Zone Secret", self.player), + "Turtle Zone 2 -> Turtle Zone 3": lambda state: has_level_progression(state, "Turtle Zone Progression", self.player, 2), + } + + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + # Require the other coins just to ensure they are being added to start inventory properly, + # and so they show up in Playthrough as required + entrance_rules["Menu -> Mario's Castle"] = lambda state: (state.has_all( + ["Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Turtle Coin"], self.player) + and state.has("Mario Coin Fragment", self.player, self.coin_fragments_required)) + else: + entrance_rules["Menu -> Mario's Castle"] = lambda state: state.has_from_list_unique([ + "Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Mario Coin", "Turtle Coin" + ], self.player, self.options.required_golden_coins) + + + for entrance, rule in entrance_rules.items(): + self.multiworld.get_entrance(entrance, self.player).access_rule = rule + + for location in self.multiworld.get_locations(self.player): + if location.name.endswith(("Coins", "Coin")): + rule = getattr(logic, location.parent_region.name.lower().replace(" ", "_") + "_coins", None) + if rule: + coins = int(location.name.split(" ")[-2]) + location.access_rule = lambda state, coin_rule=rule, num_coins=coins: \ + coin_rule(state, self.player, num_coins) + else: + rule = getattr(logic, location.name.lower().replace( + " - ", "_").replace(" ", "_").replace("'", ""), None) + if rule: + location.access_rule = lambda state, loc_rule=rule: loc_rule(state, self.player) + self.multiworld.completion_condition[self.player] = lambda state: state.has("Wario Defeated", self.player) + + def create_items(self): + item_counts = { + "Space Zone Progression": 1, + "Space Zone Secret": 1, + "Tree Zone Progression": 3, + "Tree Zone Secret": 1, + "Macro Zone Progression": 3, + "Macro Zone Secret 1": 1, + "Macro Zone Secret 2": 1, + "Pumpkin Zone Progression": 3, + "Pumpkin Zone Secret 1": 1, + "Pumpkin Zone Secret 2": 1, + "Mario Zone Progression": 3, + "Turtle Zone Progression": 2, + "Turtle Zone Secret": 1, + "Mushroom": 1, + "Fire Flower": 1, + "Carrot": 1, + "Space Physics": 1, + "Hippo Bubble": 1, + "Water Physics": 1, + "Super Star Duration Increase": 2, + "Mario Coin Fragment": 0, + } + + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + # There are 5 Zone Progression items that can be condensed. + item_counts["Mario Coin Fragment"] = 1 + ((5 * self.options.mario_coin_fragment_percentage) // 100) + + if self.options.coinsanity: + coin_count = sum([level[1] for level in self.num_coin_locations]) + max_coins = sum(self.max_coin_locations.values()) + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + removed_coins = (coin_count * self.options.mario_coin_fragment_percentage) // 100 + coin_count -= removed_coins + item_counts["Mario Coin Fragment"] += removed_coins + # Randomly remove some coin items for variety + coin_count -= (coin_count // self.random.randint(100, max(100, coin_count))) + + if coin_count: + coin_bundle_sizes = [max_coins // coin_count] * coin_count + remainder = max_coins - sum(coin_bundle_sizes) + for i in range(remainder): + coin_bundle_sizes[i] += 1 + for a, b in zip(range(1, len(coin_bundle_sizes), 2), range(2, len(coin_bundle_sizes), 2)): + split = self.random.randint(1, coin_bundle_sizes[a] + coin_bundle_sizes[b] - 1) + coin_bundle_sizes[a], coin_bundle_sizes[b] = split, coin_bundle_sizes[a] + coin_bundle_sizes[b] - split + for coin_bundle_size in coin_bundle_sizes: + item_name = f"{coin_bundle_size} Coin{'s' if coin_bundle_size > 1 else ''}" + if item_name in item_counts: + item_counts[item_name] += 1 + else: + item_counts[item_name] = 1 + + if self.options.shuffle_golden_coins == "shuffle": + for item in self.item_name_groups["Golden Coins"]: + item_counts[item] = 1 + elif self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + for item in ("Tree Coin", "Space Coin", "Macro Coin", "Pumpkin Coin", "Turtle Coin"): + self.multiworld.push_precollected(self.create_item(item)) + else: + for item, location_name in ( + ("Mario Coin", "Mario Zone 4 - Boss"), + ("Tree Coin", "Tree Zone 5 - Boss"), + ("Space Coin", "Space Zone 2 - Boss"), + ("Macro Coin", "Macro Zone 4 - Boss"), + ("Pumpkin Coin", "Pumpkin Zone 4 - Boss"), + ("Turtle Coin", "Turtle Zone 3 - Boss") + ): + location = self.multiworld.get_location(location_name, self.player) + location.place_locked_item(self.create_item(item)) + location.address = None + location.item.code = None + + if self.options.shuffle_midway_bells: + for item in [item for item in items if "Midway Bell" in item]: + if item != "Mario's Castle Midway Bell" or self.options.marios_castle_midway_bell: + item_counts[item] = 1 + + if self.options.difficulty_mode == "easy_to_normal": + item_counts["Normal Mode"] = 1 + elif self.options.difficulty_mode == "normal_to_easy": + item_counts["Easy Mode"] = 1 + + if self.options.shuffle_pipe_traversal == "single": + item_counts["Pipe Traversal"] = 1 + elif self.options.shuffle_pipe_traversal == "split": + item_counts["Pipe Traversal - Right"] = 1 + item_counts["Pipe Traversal - Left"] = 1 + item_counts["Pipe Traversal - Up"] = 1 + item_counts["Pipe Traversal - Down"] = 1 + else: + self.multiworld.push_precollected(self.create_item("Pipe Traversal")) + + if any(self.auto_scroll_levels): + if self.options.auto_scroll_mode == "global_trap_item": + item_counts["Auto Scroll"] = 1 + elif self.options.auto_scroll_mode == "global_cancel_item": + item_counts["Cancel Auto Scroll"] = 1 + else: + for level, i in enumerate(self.auto_scroll_levels): + if i == 3: + item_counts[f"Auto Scroll - {level_id_to_name[level]}"] = 1 + elif i == 2: + item_counts[f"Cancel Auto Scroll - {level_id_to_name[level]}"] = 1 + + for item in self.multiworld.precollected_items[self.player]: + if item.name in item_counts and item_counts[item.name] > 0: + item_counts[item.name] -= 1 + + location_count = len(self.multiworld.get_unfilled_locations(self.player)) + items_to_add = location_count - sum(item_counts.values()) + if items_to_add > 0: + mario_coin_frags = 0 + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + mario_coin_frags = (items_to_add * self.options.mario_coin_fragment_percentage) // 100 + item_counts["Mario Coin Fragment"] += mario_coin_frags + item_counts["Super Star Duration Increase"] += items_to_add - mario_coin_frags + elif items_to_add < 0: + if self.options.coinsanity: + for i in range(1, 168): + coin_name = f"{i} Coin{'s' if i > 1 else ''}" + if coin_name in item_counts: + amount_to_remove = min(-items_to_add, item_counts[coin_name]) + item_counts[coin_name] -= amount_to_remove + items_to_add += amount_to_remove + if items_to_add >= 0: + break + + double_progression_items = ["Tree Zone Progression", "Macro Zone Progression", "Pumpkin Zone Progression", + "Mario Zone Progression", "Turtle Zone Progression"] + self.random.shuffle(double_progression_items) + while sum(item_counts.values()) > location_count: + if double_progression_items: + double_progression_item = double_progression_items.pop() + item_counts[double_progression_item] -= 2 + item_counts[double_progression_item + " x2"] = 1 + continue + if self.options.auto_scroll_mode in ("level_trap_items", "level_cancel_items", + "chaos"): + auto_scroll_item = self.random.choice([item for item in item_counts if "Auto Scroll" in item]) + level = auto_scroll_item.split("- ")[1] + self.auto_scroll_levels[level_name_to_id[level]] = 0 + del item_counts[auto_scroll_item] + continue + raise Exception(f"Too many items in the item pool for Super Mario Land 2 player {self.player_name}") + # item = self.random.choice(list(item_counts)) + # item_counts[item] -= 1 + # if item_counts[item] == 0: + # del item_counts[item] + # self.multiworld.push_precollected(self.create_item(item)) + + self.coin_fragments_required = max((item_counts["Mario Coin Fragment"] + * self.options.mario_coin_fragments_required_percentage) // 100, 1) + + for item_name, count in item_counts.items(): + self.multiworld.itempool += [self.create_item(item_name) for _ in range(count)] + + def fill_slot_data(self): + return { + "energy_link": self.options.energy_link.value + } + + def create_item(self, name: str) -> Item: + return MarioLand2Item(name, items[name], self.item_name_to_id[name], self.player) + + def get_filler_item_name(self): + return "1 Coin" + + def modify_multidata(self, multidata: dict): + rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{self.player}_{self.multiworld.seed:11}\0', + 'utf8')[:21] + rom_name.extend([0] * (21 - len(rom_name))) + new_name = base64.b64encode(bytes(rom_name)).decode() + multidata["connect_names"][new_name] = multidata["connect_names"][self.player_name] + + +class MarioLand2Location(Location): + game = "Super Mario Land 2" + + +class MarioLand2Item(Item): + game = "Super Mario Land 2" diff --git a/worlds/marioland2/basepatch.bsdiff4 b/worlds/marioland2/basepatch.bsdiff4 new file mode 100644 index 000000000000..a8818419a6b8 Binary files /dev/null and b/worlds/marioland2/basepatch.bsdiff4 differ diff --git a/worlds/marioland2/client.py b/worlds/marioland2/client.py new file mode 100644 index 000000000000..41e6468f9393 --- /dev/null +++ b/worlds/marioland2/client.py @@ -0,0 +1,250 @@ +import base64 +import logging + +from NetUtils import ClientStatus +from worlds._bizhawk.client import BizHawkClient +from worlds._bizhawk import read, write, guarded_write + +from .rom_addresses import rom_addresses + +logger = logging.getLogger("Client") + +BANK_EXCHANGE_RATE = 20000000000 + +overworld_music = (0x05, 0x06, 0x0D, 0x0E, 0x10, 0x12, 0x1B, 0x1C, 0x1E) + +class MarioLand2Client(BizHawkClient): + system = ("GB", "SGB") + patch_suffix = ".apsml2" + game = "Super Mario Land 2" + + def __init__(self): + super().__init__() + self.locations_array = [] + self.previous_level = None + + async def validate_rom(self, ctx): + game_name = await read(ctx.bizhawk_ctx, [(0x134, 10, "ROM")]) + game_name = game_name[0].decode("ascii") + if game_name == "MARIOLAND2": + ctx.game = self.game + ctx.items_handling = 0b111 + return True + return False + + async def set_auth(self, ctx): + auth_name = await read(ctx.bizhawk_ctx, [(0x77777, 21, "ROM")]) + auth_name = base64.b64encode(auth_name[0]).decode() + ctx.auth = auth_name + + async def game_watcher(self, ctx): + from . import START_IDS + from .items import items + from .locations import locations, level_id_to_name, coins_coords, location_name_to_id + + (game_loaded_check, level_data, music, auto_scroll_levels, current_level, + midway_point, bcd_lives, num_items_received, coins, options) = \ + await read(ctx.bizhawk_ctx, [(0x0046, 10, "CartRAM"), (0x0848, 42, "CartRAM"), (0x0469, 1, "CartRAM"), + (rom_addresses["Auto_Scroll_Levels_B"], 32, "ROM"), + (0x0269, 1, "CartRAM"), (0x02A0, 1, "CartRAM"), (0x022C, 1, "CartRAM"), + (0x00F0, 2, "CartRAM"), (0x0262, 2, "CartRAM"), + (rom_addresses["Coins_Required"], 8, "ROM")]) + + coins_required = int.from_bytes(options[:2], "big") + difficulty_mode = options[2] + star_count = int.from_bytes(options[3:5], "big") + midway_bells = options[5] + energy_link = options[6] + coin_mode = options[7] + + current_level = int.from_bytes(current_level, "big") + auto_scroll_levels = list(auto_scroll_levels) + midway_point = int.from_bytes(midway_point, "big") + music = int.from_bytes(music, "big") + level_data = list(level_data) + lives = bcd_lives.hex() + num_items_received = int.from_bytes(num_items_received, "big") + if num_items_received == 0xFFFF: + num_items_received = 0 + + items_received = [list(items.keys())[item.item - START_IDS] for item in ctx.items_received] + write_num_items_received = len(items_received).to_bytes(2, "big") + + level_progression = { + "Space Zone Progression", + "Tree Zone Progression", + "Macro Zone Progression", + "Pumpkin Zone Progression", + "Mario Zone Progression", + "Turtle Zone Progression", + } + for level_item in level_progression: + for _ in range(items_received.count(level_item + " x2")): + items_received += ([level_item] * 2) + + if "Pipe Traversal" in items_received: + items_received += ["Pipe Traversal - Left", "Pipe Traversal - Right", + "Pipe Traversal - Up", "Pipe Traversal - Down"] + + if coin_mode == 2 and items_received.count("Mario Coin Fragment") >= coins_required: + items_received.append("Mario Coin") + + if current_level == 255 and self.previous_level != 255: + if coin_mode < 2: + logger.info(f"Golden Coins required: {coins_required}") + else: + logger.info(f"Mario Coin Fragments required: {coins_required}. " + f"You have {items_received.count('Mario Coin Fragment')}") + self.previous_level = current_level + + # There is no music in the title screen demos, this is how we guard against anything in the demos registering. + # There is also no music at the door to Mario's Castle, which is why the above is before this check. + if game_loaded_check != b'\x124Vx\xff\xff\xff\xff\xff\xff' or music == 0: + return + + locations_checked = [] + if current_level in level_id_to_name: + level_name = level_id_to_name[current_level] + coin_tile_data = await read(ctx.bizhawk_ctx, [(0xB000 + ((coords[1] * 256) + coords[0]), 1, "System Bus") + for coords in coins_coords[level_name]]) + num_coins = len([tile[0] for tile in coin_tile_data if tile[0] in (0x7f, 0x60, 0x07)]) + locations_checked = [location_name_to_id[f"{level_name} - {i} Coin{'s' if i > 1 else ''}"] + for i in range(1, num_coins + 1)] + + new_lives = int(lives) + energy_link_add = None + if energy_link: + if new_lives == 0: + if (f"EnergyLink{ctx.team}" in ctx.stored_data + and ctx.stored_data[f"EnergyLink{ctx.team}"] + and ctx.stored_data[f"EnergyLink{ctx.team}"] >= BANK_EXCHANGE_RATE): + new_lives = 1 + energy_link_add = -BANK_EXCHANGE_RATE + elif new_lives > 1: + energy_link_add = BANK_EXCHANGE_RATE * (new_lives - 1) + new_lives = 1 + # Convert back to binary-coded-decimal + new_lives = int(str(new_lives), 16) + + new_coins = coins.hex() + new_coins = int(new_coins[2:] + new_coins[:2]) + for item in items_received[num_items_received:]: + if item.endswith("Coins") or item == "1 Coin": + new_coins += int(item.split(" ")[0]) + # Limit to 999 and convert back to binary-coded-decimal + new_coins = int(str(min(new_coins, 999)), 16).to_bytes(2, "little") + + modified_level_data = level_data.copy() + for ID, (location, data) in enumerate(locations.items(), START_IDS): + if "clear_condition" in data: + if items_received.count(data["clear_condition"][0]) >= data["clear_condition"][1]: + modified_level_data[data["ram_index"]] |= (0x08 if data["type"] == "bell" + else 0x01 if data["type"] == "secret" else 0x80) + + if data["type"] == "level" and level_data[data["ram_index"]] & 0x40: + locations_checked.append(ID) + if data["type"] == "secret" and level_data[data["ram_index"]] & 0x02: + locations_checked.append(ID) + elif data["type"] == "bell" and data["id"] == current_level and midway_point == 0xFF: + locations_checked.append(ID) + + invincibility_length = int((832.0 / (star_count + 1)) + * (items_received.count("Super Star Duration Increase") + 1)) + + if "Easy Mode" in items_received: + difficulty_mode = 1 + elif "Normal Mode" in items_received: + difficulty_mode = 0 + + data_writes = [ + (rom_addresses["Space_Physics"], [0x7e] if "Space Physics" in items_received else [0xaf], "ROM"), + (rom_addresses["Get_Hurt_To_Big_Mario"], [1] if "Mushroom" in items_received else [0], "ROM"), + (rom_addresses["Get_Mushroom_A"], [0xea, 0x16, 0xa2] if "Mushroom" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Mushroom_B"], [0xea, 0x16, 0xa2] if "Mushroom" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Mushroom_C"], [00] if "Mushroom" in items_received else [0xd8], "ROM"), + (rom_addresses["Get_Carrot_A"], [0xea, 0x16, 0xa2] if "Carrot" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Carrot_B"], [0xea, 0x16, 0xa2] if "Carrot" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Carrot_C"], [00] if "Carrot" in items_received else [0xc8], "ROM"), + (rom_addresses["Get_Fire_Flower_A"], [0xea, 0x16, 0xa2] if "Fire Flower" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Fire_Flower_B"], [0xea, 0x16, 0xa2] if "Fire Flower" in items_received else [0, 0, 0], "ROM"), + (rom_addresses["Get_Fire_Flower_C"], [00] if "Fire Flower" in items_received else [0xc8], "ROM"), + (rom_addresses["Invincibility_Star_A"], [(invincibility_length >> 8) + 1], "ROM"), + (rom_addresses["Invincibility_Star_B"], [invincibility_length & 0xFF], "ROM"), + (rom_addresses["Enable_Bubble"], [0xcb, 0xd7] if "Hippo Bubble" in items_received else [0, 0], "ROM"), + (rom_addresses["Enable_Swim"], [0xcb, 0xcf] if "Water Physics" in items_received else [0, 0], "ROM"), + (rom_addresses["Pipe_Traversal_A"], [16] if "Pipe Traversal - Down" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_B"], [32] if "Pipe Traversal - Up" in items_received else [10], "ROM"), + (rom_addresses["Pipe_Traversal_C"], [48] if "Pipe Traversal - Right" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_D"], [64] if "Pipe Traversal - Left" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_A"], [5] if "Pipe Traversal - Down" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_B"], [5] if "Pipe Traversal - Up" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_C"], [5] if "Pipe Traversal - Right" in items_received else [0], "ROM"), + (rom_addresses["Pipe_Traversal_SFX_D"], [5] if "Pipe Traversal - Left" in items_received else [0], "ROM"), + (0x022c, [new_lives], "CartRAM"), + (0x02E4, [difficulty_mode], "CartRAM"), + (0x0848, modified_level_data, "CartRAM"), + (0x0262, new_coins, "CartRAM"), + ] + + if items_received: + data_writes.append((0x00F0, write_num_items_received, "CartRAM")) + + if midway_point == 0xFF and (midway_bells or music in overworld_music): + # after registering the check for the midway bell, clear the value just for safety. + data_writes.append((0x02A0, [0], "CartRAM")) + + for i in range(32): + if auto_scroll_levels[i] == 3: + if "Auto Scroll" in items_received or f"Auto Scroll - {level_id_to_name[i]}" in items_received: + auto_scroll_levels[i] = 1 + if i == current_level: + data_writes.append((0x02C8, [0x01], "CartRAM")) + else: + auto_scroll_levels[i] = 0 + elif auto_scroll_levels[i] == 2: + if ("Cancel Auto Scroll" in items_received + or f"Cancel Auto Scroll - {level_id_to_name[i]}" in items_received): + auto_scroll_levels[i] = 0 + if i == current_level: + data_writes.append((0x02C8, [0x00], "CartRAM")) + else: + auto_scroll_levels[i] = 1 + data_writes.append((rom_addresses["Auto_Scroll_Levels"], auto_scroll_levels, "ROM")) + + success = await guarded_write(ctx.bizhawk_ctx, data_writes, [(0x0848, level_data, "CartRAM"), + (0x022C, [int.from_bytes(bcd_lives, "big")], + "CartRAM"), + [0x0262, coins, "CartRAM"]]) + + if success and energy_link_add is not None: + await ctx.send_msgs([{ + "cmd": "Set", "key": f"EnergyLink{ctx.team}", "operations": + [{"operation": "add", "value": energy_link_add}, + {"operation": "max", "value": 0}], + }]) + + if not ctx.server or not ctx.server.socket.open or ctx.server.socket.closed: + return + + if locations_checked and locations_checked != self.locations_array: + self.locations_array = locations_checked + await ctx.send_msgs([{"cmd": "LocationChecks", "locations": locations_checked}]) + + if music == 0x18: + await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) + ctx.finished_game = True + + def on_package(self, ctx, cmd: str, args: dict): + super().on_package(ctx, cmd, args) + if cmd == 'Connected': + if ctx.slot_data["energy_link"]: + ctx.set_notify(f"EnergyLink{ctx.team}") + if ctx.ui: + ctx.ui.enable_energy_link() + ctx.ui.energy_link_label.text = "Lives: Standby" + elif cmd == "SetReply" and args["key"].startswith("EnergyLink"): + if ctx.ui: + ctx.ui.energy_link_label.text = f"Lives: {int(args['value'] / BANK_EXCHANGE_RATE)}" + elif cmd == "Retrieved": + if f"EnergyLink{ctx.team}" in args["keys"] and args['keys'][f'EnergyLink{ctx.team}'] and ctx.ui: + ctx.ui.energy_link_label.text = f"Lives: {int(args['keys'][f'EnergyLink{ctx.team}'] / BANK_EXCHANGE_RATE)}" diff --git a/worlds/marioland2/docs/en_Super Mario Land 2.md b/worlds/marioland2/docs/en_Super Mario Land 2.md new file mode 100644 index 000000000000..7be02a2a287a --- /dev/null +++ b/worlds/marioland2/docs/en_Super Mario Land 2.md @@ -0,0 +1,64 @@ +# Super Mario Land 2: 6 Golden Coins + +## Where is the options page? + +The [player options page for this game](../player-options) contains all the options you need to configure and export a +config file. + +## What items and locations get shuffled? + +Completing a level's exits results in a location check instead of automatically bringing you to the next level. +Where there are secret exits, the secret exit will be a separate location check. There is one exception, Hippo Zone, +that does not have a separate check for its secret exit. The Hippo Zone secret exit will still bring you to the Space +Zone. + +Ringing the Midway Bells in each level that has one will register a location check. If the "Shuffle Midway Bells" option +is turned on, then ringing the bell will not grant the checkpoint, and instead you must obtain the Midway Bell item from +the item pool to gain the checkpoint for that level. Holding SELECT while loading into a level where you have unlocked +the Midway Bell checkpoint will start you at the beginning of the level. + +Unlocking paths to new levels requires finding or receiving Zone Progression items. For example, receiving the first +"Turtle Zone Progression" will unlock the path from Turtle Zone 1 to Turtle Zone 2. Paths to secret levels are separate +items, so Turtle Zone Secret will open the path from Turtle Zone 2 to the Turtle Zone Secret Course. + +Depending on settings, there may be some "Zone Progression x2" items that open two paths at once. + +The path from Tree Zone 2 to the branch to Tree Zone 3 and 4 is one unlock, so both levels will open at this point. + +Besides the zone progression unlocks, the following items are always shuffled: +- Mushroom: required to become Big Mario. If you are Fire or Bunny Mario and take damage, and have not obtained the +Mushroom, you will drop straight down to Small Mario. +- Fire Flower: required to become Fire Mario. +- Carrot: required to become Bunny Mario. +- Hippo Bubble: required to use the bubbles in Hippo Zone to fly. +- Water Physics: Mario will fall through water as though it is air until this is obtained. +- Space Physics: the Space Zone levels will have normal gravity until this is obtained. +- Super Star Duration Increase: you begin with a drastically lowered invincibility star duration, and these items will +increase it. + +Additionally, the following items can be shuffled depending on your YAML options: +- The 6 Golden Coins: note that the game will still show you the coin being sent to the castle when defeating a boss +regardless of whether the coin is actually obtained in that location. +- Mario Coin Fragments: As an alternative to shuffling the 6 Golden Coins, you can shuffle Mario Coin Fragments, +a chosen percentage of which are needed to assemble the Mario Coin. You will start with the other 5 coins. +- Normal Mode/Easy Mode: you can start the game in Normal Mode with an Easy Mode "upgrade" in the item pool, or start in +Easy Mode with a Normal Mode "trap" item, swapping the difficulty. +- Auto Scroll: auto-scrolling levels can be set to not auto scroll until this trap item is received. +- Pipe Traversal: required to enter pipes. Can also be split into 4 items, each enabling pipe entry from a different +direction. +- Coins: if Coinsanity is enabled, coins will be shuffled into the item pool. A number of checks will be added to each +level for obtaining a specific number of coins within a single playthrough of the level. + + +## When the player receives an item, what happens? + +There is no in-game indication that an item has been received. You will need to watch the client or web tracker to be +sure you're aware of the items you've received. + +## Special Thanks to: + +- [froggestspirit](https://github.com/froggestspirit) for his Super Mario Land 2 disassembly. While very incomplete, it +had enough memory values mapped out to make my work significantly easier. +- [slashinfty](https://github.com/slashinfty), the author of the +[Super Mario Land 2 Randomizer](https://sml2r.download/) for permitting me to port features such as Randomize Enemies +and Randomize Platforms directly from it. \ No newline at end of file diff --git a/worlds/marioland2/docs/setup_en.md b/worlds/marioland2/docs/setup_en.md new file mode 100644 index 000000000000..581d36e7864f --- /dev/null +++ b/worlds/marioland2/docs/setup_en.md @@ -0,0 +1,75 @@ +# Setup Guide for Super Mario Land 2: 6 Golden Coins + +## Important + +As we are using BizHawk, this guide is only applicable to Windows and Linux systems. + +## Required Software + +- BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) + - Version 2.9.1 is recommended. + - Detailed installation instructions for BizHawk can be found at the above link. + - Windows users must run the prereq installer first, which can also be found at the above link. +- The built-in Archipelago client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases) +- A Super Mario Land 2: 6 Golden Coins version 1.0 ROM file. The Archipelago community cannot provide this. + +## Configuring BizHawk + +Once BizHawk has been installed, open EmuHawk and change the following settings: + +- Under Config > Customize > Advanced, make sure the box for AutoSaveRAM is checked, and click the 5s button. + This reduces the possibility of losing save data in emulator crashes. +- Under Config > Customize, check the "Run in background" box. This will prevent disconnecting from the client while +EmuHawk is running in the background. + +It is strongly recommended to associate Game Boy ROM extensions (\*.gb) to the EmuHawk we've just installed. +To do so, we simply have to search any Game Boy ROM we happened to own, right click and select "Open with...", unfold +the list that appears and select the bottom option "Look for another application", then browse to the BizHawk folder +and select EmuHawk.exe. + +## Configuring your YAML file + +### What is a YAML file and why do I need one? + +Your YAML file contains a set of configuration options which provide the generator with information about how it should +generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy +an experience customized for their taste, and different players in the same multiworld can all have different options. + +### Where do I get a YAML file? + +You can generate a yaml or download a template by visiting the [Super Mario Land 2 Player Options Page](/games/Super%20Mario%20Land%202/player-options) + +## Joining a MultiWorld Game + +### Generating and Patching a Game + +1. Create your options file (YAML). +2. Follow the general Archipelago instructions for [generating a game](../../Archipelago/setup/en#generating-a-game). +This will generate an output file for you. Your patch file will have a `.apsml2` file extension. +3. Open `ArchipelagoLauncher.exe` +4. Select "Open Patch" on the left side and select your patch file. +5. If this is your first time patching, you will be prompted to locate your vanilla ROM. +6. A patched `.gb` file will be created in the same place as the patch file. +7. On your first time opening a patch with BizHawk Client, you will also be asked to locate `EmuHawk.exe` in your +BizHawk install. + +You must connect Super Mario Land 2 to a server, even for a single player game, or progress cannot be made. + +### Connect to the Multiserver + +By default, opening a patch file will do steps 1-5 below for you automatically. Even so, keep them in your memory just +in case you have to close and reopen a window mid-game for some reason. + +1. Super Mario Land 2 uses Archipelago's BizHawk Client. If the client isn't still open from when you patched your +game, you can re-open it from the launcher. +2. Ensure EmuHawk is running the patched ROM. +3. In EmuHawk, go to `Tools > Lua Console`. This window must stay open while playing. +4. In the Lua Console window, go to `Script > Open Script…`. +5. Navigate to your Archipelago install folder and open `data/lua/connector_bizhawk_generic.lua`. +6. The emulator may freeze every few seconds until it manages to connect to the client. This is expected. The BizHawk +Client window should indicate that it connected and recognized Super Mario Land 2. +7. To connect the client to the server, enter your room's address and port (e.g. `archipelago.gg:38281`) into the +top text field of the client and click Connect. + +To connect the client to the multiserver simply put `
:` on the textfield on top and press enter (if the +server uses password, type in the bottom textfield `/connect
: [password]`) \ No newline at end of file diff --git a/worlds/marioland2/items.py b/worlds/marioland2/items.py new file mode 100644 index 000000000000..041ffe99f976 --- /dev/null +++ b/worlds/marioland2/items.py @@ -0,0 +1,79 @@ +from BaseClasses import ItemClassification +from .locations import level_name_to_id +from .options import CoinsanityChecks + +items = { + "Space Zone Progression": ItemClassification.progression, + "Space Zone Secret": ItemClassification.progression, + "Tree Zone Progression": ItemClassification.progression, + "Tree Zone Progression x2": ItemClassification.progression, + "Tree Zone Secret": ItemClassification.progression, + "Macro Zone Progression": ItemClassification.progression, + "Macro Zone Progression x2": ItemClassification.progression, + "Macro Zone Secret 1": ItemClassification.progression, + "Macro Zone Secret 2": ItemClassification.progression_skip_balancing, + "Pumpkin Zone Progression": ItemClassification.progression, + "Pumpkin Zone Progression x2": ItemClassification.progression, + "Pumpkin Zone Secret 1": ItemClassification.progression, + "Pumpkin Zone Secret 2": ItemClassification.progression, + "Mario Zone Progression": ItemClassification.progression, + "Mario Zone Progression x2": ItemClassification.progression, + "Turtle Zone Progression": ItemClassification.progression, + "Turtle Zone Progression x2": ItemClassification.progression, + "Turtle Zone Secret": ItemClassification.progression, + "Tree Coin": ItemClassification.progression_skip_balancing, + "Space Coin": ItemClassification.progression_skip_balancing, + "Macro Coin": ItemClassification.progression_skip_balancing, + "Pumpkin Coin": ItemClassification.progression_skip_balancing, + "Mario Coin": ItemClassification.progression_skip_balancing, + "Turtle Coin": ItemClassification.progression_skip_balancing, + "Mario Coin Fragment": ItemClassification.progression_skip_balancing, + "Mushroom": ItemClassification.progression, + "Fire Flower": ItemClassification.progression, + "Carrot": ItemClassification.progression, + "Space Physics": ItemClassification.progression_skip_balancing, + "Hippo Bubble": ItemClassification.progression_skip_balancing, + "Water Physics": ItemClassification.progression, + "Pipe Traversal": ItemClassification.progression, + "Pipe Traversal - Down": ItemClassification.progression, + "Pipe Traversal - Up": ItemClassification.progression, + "Pipe Traversal - Right": ItemClassification.progression, + "Pipe Traversal - Left": ItemClassification.progression_skip_balancing, + "Super Star Duration Increase": ItemClassification.filler, + "Easy Mode": ItemClassification.useful, + "Normal Mode": ItemClassification.trap, + "Auto Scroll": ItemClassification.trap, + **{f"Auto Scroll - {level}": ItemClassification.trap for level in level_name_to_id if level != "Wario's Castle"}, + "Cancel Auto Scroll": ItemClassification.progression, + **{f"Cancel Auto Scroll - {level}": ItemClassification.progression for level in level_name_to_id + if level != "Wario's Castle"}, + "Mushroom Zone Midway Bell": ItemClassification.filler, + "Tree Zone 1 Midway Bell": ItemClassification.filler, + "Tree Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Tree Zone 4 Midway Bell": ItemClassification.progression_skip_balancing, + "Tree Zone 5 Midway Bell": ItemClassification.filler, + "Space Zone 1 Midway Bell": ItemClassification.filler, + "Space Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 3 Midway Bell": ItemClassification.progression_skip_balancing, + "Macro Zone 4 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Pumpkin Zone 2 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 3 Midway Bell": ItemClassification.filler, + "Pumpkin Zone 4 Midway Bell": ItemClassification.filler, + "Mario Zone 1 Midway Bell": ItemClassification.progression_skip_balancing, + "Mario Zone 2 Midway Bell": ItemClassification.filler, + "Mario Zone 3 Midway Bell": ItemClassification.filler, + "Mario Zone 4 Midway Bell": ItemClassification.filler, + "Turtle Zone 1 Midway Bell": ItemClassification.filler, + "Turtle Zone 2 Midway Bell": ItemClassification.progression_skip_balancing, + "Turtle Zone 3 Midway Bell": ItemClassification.filler, + "Mario's Castle Midway Bell": ItemClassification.progression_skip_balancing, + "1 Coin": ItemClassification.filler, + **{f"{i} Coins": ItemClassification.filler for i in range(2, CoinsanityChecks.range_end + 1)} +} + +for level in {"Turtle Zone Secret Course", "Macro Zone Secret Course", "Turtle Zone 3", "Scenic Course", + "Mario Zone 2"}: + items[f"Cancel Auto Scroll - {level}"] = ItemClassification.useful diff --git a/worlds/marioland2/locations.py b/worlds/marioland2/locations.py new file mode 100644 index 000000000000..02ae1cca9dc5 --- /dev/null +++ b/worlds/marioland2/locations.py @@ -0,0 +1,498 @@ +START_IDS = 1 + +locations = { + "Mushroom Zone - Normal Exit": {"id": 0x00, "ram_index": 0, "type": "level"}, + "Mushroom Zone - Midway Bell": {"id": 0x00, "ram_index": 0, "clear_condition": ("Mushroom Zone Midway Bell", 1), "type": "bell"}, + "Scenic Course - Normal Exit": {"id": 0x19, "ram_index": 40, "type": "level"}, + "Tree Zone 1 - Normal Exit": {"id": 0x01, "ram_index": 1, "clear_condition": ("Tree Zone Progression", 1), "type": "level"}, + "Tree Zone 1 - Midway Bell": {"id": 0x01, "ram_index": 1, "clear_condition": ("Tree Zone 1 Midway Bell", 1), "type": "bell"}, + "Tree Zone 2 - Normal Exit": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone Progression", 2), "type": "level"}, + "Tree Zone 2 - Secret Exit": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone Secret", 1), "type": "secret"}, + "Tree Zone 2 - Midway Bell": {"id": 0x02, "ram_index": 2, "clear_condition": ("Tree Zone 2 Midway Bell", 1), "type": "bell"}, + "Tree Zone 3 - Normal Exit": {"id": 0x04, "ram_index": 4, "clear_condition": ("Tree Zone Progression", 3), "type": "level"}, + "Tree Zone 4 - Normal Exit": {"id": 0x03, "ram_index": 3, "clear_condition": ("Tree Zone Progression", 3), "type": "level"}, + "Tree Zone 4 - Midway Bell": {"id": 0x03, "ram_index": 3, "clear_condition": ("Tree Zone 4 Midway Bell", 1), "type": "bell"}, + "Tree Zone 5 - Boss": {"id": 0x05, "ram_index": 5, "clear_condition": ("Tree Coin", 1), "type": "level"}, + "Tree Zone 5 - Midway Bell": {"id": 0x05, "ram_index": 5, "clear_condition": ("Tree Zone 5 Midway Bell", 1), "type": "bell"}, + "Tree Zone Secret Course - Normal Exit": {"id": 0x1D, "ram_index": 36, "type": "level"}, + "Hippo Zone - Normal or Secret Exit": {"id": 0x11, "ram_index": 31, "type": "level"}, + "Space Zone 1 - Normal Exit": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone Progression", 1), "type": "level"}, + "Space Zone 1 - Secret Exit": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone Secret", 1), "type": "secret"}, + "Space Zone 1 - Midway Bell": {"id": 0x12, "ram_index": 16, "clear_condition": ("Space Zone 1 Midway Bell", 1), "type": "bell"}, + "Space Zone Secret Course - Normal Exit": {"id": 0x1C, "ram_index": 41, "type": "level"}, + "Space Zone 2 - Boss": {"id": 0x13, "ram_index": 17, "clear_condition": ("Space Coin", 1), "type": "level"}, + "Space Zone 2 - Midway Bell": {"id": 0x13, "ram_index": 17, "clear_condition": ("Space Zone 2 Midway Bell", 1), "type": "bell"}, + "Macro Zone 1 - Normal Exit": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone Progression", 1), "type": "level"}, + "Macro Zone 1 - Secret Exit": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone Secret 1", 1), "type": "secret"}, + "Macro Zone 1 - Midway Bell": {"id": 0x14, "ram_index": 11, "clear_condition": ("Macro Zone 1 Midway Bell", 1), "type": "bell"}, + "Macro Zone 2 - Normal Exit": {"id": 0x15, "ram_index": 12, "clear_condition": ("Macro Zone Progression", 2), "type": "level"}, + "Macro Zone 2 - Midway Bell": {"id": 0x15, "ram_index": 12, "clear_condition": ("Macro Zone 2 Midway Bell", 1), "type": "bell"}, + "Macro Zone 3 - Normal Exit": {"id": 0x16, "ram_index": 13, "clear_condition": ("Macro Zone Progression", 3), "type": "level"}, + "Macro Zone 3 - Midway Bell": {"id": 0x16, "ram_index": 13, "clear_condition": ("Macro Zone 3 Midway Bell", 1), "type": "bell"}, + "Macro Zone 4 - Boss": {"id": 0x17, "ram_index": 14, "clear_condition": ("Macro Coin", 1), "type": "level"}, + "Macro Zone 4 - Midway Bell": {"id": 0x17, "ram_index": 14, "clear_condition": ("Macro Zone 4 Midway Bell", 1), "type": "bell"}, + "Macro Zone Secret Course - Normal Exit": {"id": 0x1E, "ram_index": 35, "clear_condition": ("Macro Zone Secret 2", 1), "type": "level"}, + "Pumpkin Zone 1 - Normal Exit": {"id": 0x06, "ram_index": 6, "clear_condition": ("Pumpkin Zone Progression", 1), "type": "level"}, + "Pumpkin Zone 1 - Midway Bell": {"id": 0x06, "ram_index": 6, "clear_condition": ("Pumpkin Zone 1 Midway Bell", 1), "type": "bell"}, + "Pumpkin Zone 2 - Normal Exit": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone Progression", 2), "type": "level"}, + "Pumpkin Zone 2 - Secret Exit": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone Secret 1", 1), "type": "secret"}, + "Pumpkin Zone 2 - Midway Bell": {"id": 0x07, "ram_index": 7, "clear_condition": ("Pumpkin Zone 2 Midway Bell", 2), "type": "bell"}, + "Pumpkin Zone 3 - Normal Exit": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone Progression", 3), "type": "level"}, + "Pumpkin Zone 3 - Secret Exit": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone Secret 2", 1), "type": "secret"}, + "Pumpkin Zone 3 - Midway Bell": {"id": 0x08, "ram_index": 8, "clear_condition": ("Pumpkin Zone 3 Midway Bell", 3), "type": "bell"}, + "Pumpkin Zone 4 - Boss": {"id": 0x09, "ram_index": 9, "clear_condition": ("Pumpkin Coin", 1), "type": "level"}, + "Pumpkin Zone 4 - Midway Bell": {"id": 0x09, "ram_index": 9, "clear_condition": ("Pumpkin Zone 4 Midway Bell", 1), "type": "bell"}, + "Pumpkin Zone Secret Course 1 - Normal Exit": {"id": 0x1B, "ram_index": 38, "type": "level"}, + "Pumpkin Zone Secret Course 2 - Normal Exit": {"id": 0x1F, "ram_index": 39, "type": "level"}, + "Mario Zone 1 - Normal Exit": {"id": 0x0A, "ram_index": 26, "clear_condition": ("Mario Zone Progression", 1), "type": "level"}, + "Mario Zone 1 - Midway Bell": {"id": 0x0A, "ram_index": 26, "clear_condition": ("Mario Zone 1 Midway Bell", 1), "type": "bell"}, + "Mario Zone 2 - Normal Exit": {"id": 0x0B, "ram_index": 27, "clear_condition": ("Mario Zone Progression", 2), "type": "level"}, + "Mario Zone 2 - Midway Bell": {"id": 0x0B, "ram_index": 27, "clear_condition": ("Mario Zone 2 Midway Bell", 1), "type": "bell"}, + "Mario Zone 3 - Normal Exit": {"id": 0x0C, "ram_index": 28, "clear_condition": ("Mario Zone Progression", 3), "type": "level"}, + "Mario Zone 3 - Midway Bell": {"id": 0x0C, "ram_index": 28, "clear_condition": ("Mario Zone 3 Midway Bell", 1), "type": "bell"}, + "Mario Zone 4 - Boss": {"id": 0x0D, "ram_index": 29, "clear_condition": ("Mario Coin", 1), "type": "level"}, + "Mario Zone 4 - Midway Bell": {"id": 0x0D, "ram_index": 29, "clear_condition": ("Mario Zone 4 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 1 - Normal Exit": {"id": 0x0E, "ram_index": 21, "clear_condition": ("Turtle Zone Progression", 1), "type": "level"}, + "Turtle Zone 1 - Midway Bell": {"id": 0x0E, "ram_index": 21, "clear_condition": ("Turtle Zone 1 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 2 - Normal Exit": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone Progression", 2), "type": "level"}, + "Turtle Zone 2 - Secret Exit": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone Secret", 1), "type": "secret"}, + "Turtle Zone 2 - Midway Bell": {"id": 0x0F, "ram_index": 22, "clear_condition": ("Turtle Zone 2 Midway Bell", 1), "type": "bell"}, + "Turtle Zone 3 - Boss": {"id": 0x10, "ram_index": 23, "clear_condition": ("Turtle Coin", 1), "type": "level"}, + "Turtle Zone 3 - Midway Bell": {"id": 0x10, "ram_index": 23, "clear_condition": ("Turtle Zone 3 Midway Bell", 1), "type": "bell"}, + "Turtle Zone Secret Course - Normal Exit": {"id": 0x1A, "ram_index": 37, "type": "level"}, + "Mario's Castle - Midway Bell": {"id": 24, "ram_index": 24, "clear_condition": ("Mario's Castle Midway Bell", 1), "type": "bell"}, +} + + +coins_coords = { + "Mushroom Zone": + [(22, 28), (24, 28), (42, 28), (43, 28), (74, 36), (74, 37), (74, 38), (76, 36), (76, 37), + (76, 38), (78, 36), (78, 37), (78, 38), (80, 36), (80, 37), (80, 38), (82, 36), (82, 37), + (82, 38), (83, 25), (84, 25), (84, 36), (84, 37), (84, 38), (85, 25), (86, 25), (86, 36), + (86, 37), (86, 38), (87, 25), (88, 36), (88, 37), (88, 38), (116, 24), (117, 24), (118, 24), + (151, 28), (152, 28), (180, 28), (181, 24), (181, 28), (182, 24), (182, 28), (183, 24), (183, 28), + (184, 24), (184, 28), (185, 24), (185, 28), (186, 24), (186, 28), (187, 24), (187, 28), (188, 24), + (188, 28), (189, 28), (211, 25), (212, 25), (212, 36), (212, 37), (212, 38), (212, 39), (213, 25), + (213, 36), (213, 37), (213, 38), (213, 39), (214, 25), (214, 36), (214, 37), (214, 38), (214, 39), + (215, 25), (216, 25), (217, 25), (217, 36), (217, 37), (217, 38), (217, 39), (218, 25), (218, 36), + (218, 37), (218, 38), (218, 39), (219, 25), (219, 36), (219, 37), (219, 38), (219, 39), (220, 25), + (231, 24), (232, 24)], + "Tree Zone 1": + [(27, 30), (28, 30), (29, 30), (33, 27), (34, 27), (35, 27), (40, 30), (41, 30), (42, 30), (47, 27), + (48, 27), (49, 27), (56, 30), (57, 30), (58, 30), (64, 30), (65, 30), (66, 30), (88, 30), (89, 30), + (90, 30), (94, 30), (95, 30), (96, 30), (100, 30), (101, 30), (102, 30), (106, 27), (107, 27), + (108, 27), (112, 30), (113, 30), (114, 30), (119, 28), (138, 30), (139, 30), (140, 30), (150, 28), + (151, 20), (151, 28), (152, 20), (152, 26), (152, 28), (153, 26), (153, 28), (154, 26), (154, 28), + (155, 26), (155, 28), (156, 26), (156, 28), (157, 20), (157, 26), (157, 28), (158, 20), (158, 26), + (158, 28), (159, 26), (159, 28), (160, 28), (161, 28), (176, 13), (177, 13), (177, 29), (178, 13), + (178, 29), (179, 13), (179, 29), (180, 13), (181, 13), (182, 13), (183, 13), (184, 13), (185, 13), + (186, 13), (187, 13), (187, 29), (188, 13), (188, 29), (189, 13), (189, 29), (190, 13), (191, 13), + (192, 13), (193, 13), (194, 13), (195, 13), (196, 13), (197, 13), (197, 29), (198, 13), (198, 29), + (199, 13), (199, 29), (200, 13), (201, 13), (202, 13), (203, 13), (204, 13), (205, 13), (206, 13), + (207, 27), (208, 13), (208, 27), (209, 14), (209, 27), (210, 10), (210, 11), (210, 12), (210, 13), + (210, 14), (210, 15), (211, 14), (212, 13), (219, 30), (220, 30), (221, 30), (229, 27), (230, 27), + (231, 27)], + "Tree Zone 2": + [(27, 11), (28, 11), (42, 10), (43, 10), (44, 10), (51, 28), (61, 9), (65, 26), (66, 26), (67, 26), + (70, 24), (71, 24), (72, 10), (72, 24), (73, 10), (73, 24), (75, 10), (76, 10), (76, 26), (77, 26), + (78, 10), (78, 26), (79, 10), (80, 24), (81, 10), (81, 24), (82, 10), (82, 24), (83, 24), (127, 7), + (128, 7), (129, 7), (130, 7), (136, 43), (138, 9), (138, 10), (138, 11), (139, 41), (140, 41), + (141, 41), (142, 9), (142, 10), (142, 11), (144, 41), (145, 41), (146, 9), (146, 10), (146, 11), + (146, 41), (149, 41), (150, 41), (151, 41), (154, 41), (155, 41), (156, 41), (159, 41), (160, 41), + (161, 41), (164, 41), (165, 41), (166, 41), (169, 41), (170, 41), (171, 41), (174, 41), (175, 41), + (176, 41), (182, 3), (188, 42), (188, 43), (188, 44), (189, 42), (189, 43), (189, 44), (190, 42), + (190, 43), (190, 44), (191, 42), (191, 43), (191, 44), (192, 42), (192, 43), (192, 44), (193, 42), + (193, 43), (193, 44), (213, 8), (213, 9), (213, 10), (213, 11), (213, 12), (213, 13), (213, 14), + (213, 15), (213, 16), (213, 17), (213, 18), (213, 19), (213, 20), (213, 21), (213, 22), (213, 23), + (213, 24), (213, 25)], + "Tree Zone Secret Course": + [(10, 24), (11, 24), (12, 24), (17, 23), (39, 24), (40, 24), (41, 24), (42, 24), (45, 24), + (46, 24), (47, 24), (48, 24), (51, 25), (52, 25), (53, 25), (54, 25), (58, 26), (59, 26), + (60, 26), (61, 24), (61, 25), (62, 24), (62, 25), (63, 24), (63, 25), (64, 24), (64, 25), + (67, 25), (68, 26), (69, 27), (70, 27), (73, 26), (74, 27), (75, 27), (76, 27), (80, 23), + (80, 24), (81, 23), (81, 24), (82, 23), (82, 24), (83, 23), (83, 24), (87, 25), (88, 24), + (89, 24), (90, 25), (91, 26), (100, 23), (114, 27), (114, 28), (115, 27), (115, 28), (116, 27), + (116, 28), (117, 27), (117, 28), (118, 27), (118, 28), (119, 27), (119, 28), (120, 27), + (120, 28), (121, 27), (121, 28), (128, 27), (128, 28), (131, 27), (131, 28), (134, 27), + (134, 28), (137, 27), (137, 28), (138, 27), (138, 28), (143, 27), (143, 28), (159, 23)], + "Tree Zone 4": + [(22, 10), (24, 12), (26, 10), (28, 27), (29, 11), (30, 11), (31, 11), (32, 11), (33, 11), (34, 11), + (35, 11), (37, 10), (38, 12), (41, 11), (43, 12), (61, 11), (70, 11), (79, 11), (89, 11), (103, 22), + (103, 25), (103, 28), (105, 22), (105, 25), (105, 28), (107, 22), (107, 25), (107, 28), (109, 22), + (109, 25), (109, 28), (111, 22), (111, 25), (111, 28), (113, 22), (113, 25), (113, 28), (115, 22), + (115, 25), (115, 28), (117, 22), (117, 25), (117, 28), (122, 22), (122, 25), (122, 28), (124, 22), + (124, 25), (124, 28), (126, 22), (126, 25), (126, 28), (128, 22), (128, 25), (128, 28), (130, 22), + (130, 25), (130, 28), (132, 22), (132, 25), (132, 28), (134, 22), (134, 25), (134, 28), (136, 22), + (136, 25), (136, 28), (171, 10), (196, 26), (196, 29), (197, 26), (197, 29), (198, 26), (198, 29), + (199, 26), (199, 29), (200, 26), (200, 29)], + "Tree Zone 3": + [(18, 11), (18, 12), (19, 11), (19, 12), (20, 11), (20, 12), (21, 11), (21, 12), (22, 11), (22, 12), + (26, 40), (27, 11), (27, 12), (28, 11), (28, 12), (29, 11), (29, 12), (30, 11), (30, 12), (31, 11), + (31, 12), (48, 41), (49, 41), (50, 41), (51, 41), (61, 25), (77, 24)], + "Tree Zone 5": + [(23, 41), (84, 39), (85, 39), (116, 42), (123, 39), (132, 39), (134, 36), (134, 39), (134, 43), + (134, 44), (135, 43), (135, 44), (136, 36), (136, 39), (136, 43), (136, 44), (137, 43), (137, 44), + (138, 36), (138, 39), (138, 43), (138, 44), (139, 43), (139, 44), (140, 36), (140, 39), (140, 43), + (140, 44), (141, 43), (141, 44), (142, 36), (142, 39), (142, 43), (142, 44), (144, 36), (144, 39), + (146, 36), (146, 39)], + "Scenic Course": + [(24, 28), (39, 28), (54, 28), (72, 28), (87, 28), (103, 28), (117, 28)], + "Hippo Zone": + [(2, 20), (3, 3), (15, 26), (16, 26), (17, 26), (28, 4), (28, 7), (28, 10), (28, 13), (29, 4), + (29, 7), (29, 10), (29, 13), (29, 21), (30, 4), (30, 7), (30, 10), (30, 13), (32, 15), (33, 15), + (34, 15), (35, 15), (36, 15), (37, 15), (41, 12), (41, 13), (42, 11), (43, 10), (44, 10), (45, 10), + (46, 11), (47, 12), (47, 13), (48, 14), (49, 15), (50, 15), (51, 15), (52, 14), (53, 12), (53, 13), + (54, 11), (55, 10), (56, 10), (57, 10), (58, 11), (59, 12), (59, 13), (60, 14), (61, 15), (62, 15), + (63, 15), (64, 14), (65, 12), (65, 13), (66, 11), (67, 10), (68, 10), (69, 10), (70, 11), (71, 12), + (71, 13), (72, 14), (73, 15), (74, 15), (75, 15), (76, 14), (77, 12), (77, 13), (84, 11), (85, 11), + (85, 22), (86, 22), (91, 6), (92, 6), (92, 11), (93, 6), (93, 11), (94, 11), (95, 16), (96, 12), + (96, 16), (97, 8), (97, 12), (97, 16), (98, 8), (98, 12), (99, 8), (112, 6), (112, 7), (112, 12), + (112, 13), (113, 2), (113, 5), (113, 8), (113, 11), (113, 14), (113, 17), (114, 2), (114, 5), + (114, 8), (114, 11), (114, 14), (114, 17), (115, 3), (115, 4), (115, 9), (115, 10), (115, 15), + (115, 16), (124, 3), (124, 4), (124, 9), (124, 10), (124, 15), (124, 16), (125, 2), (125, 5), + (125, 8), (125, 11), (125, 14), (125, 17), (126, 2), (126, 5), (126, 8), (126, 11), (126, 14), + (126, 17), (127, 6), (127, 7), (127, 12), (127, 13), (129, 13), (130, 13), (131, 13), (132, 13), + (132, 22), (133, 13), (134, 13), (135, 13), (136, 13), (136, 21), (137, 13), (138, 13), (139, 13), + (139, 22), (140, 13), (141, 13), (142, 13), (154, 7), (155, 7), (156, 7), (157, 10), (158, 10), + (159, 10), (162, 15), (162, 16), (162, 17), (164, 15), (164, 16), (164, 17), (166, 15), (166, 16), + (166, 17), (168, 15), (168, 16), (168, 17), (170, 15), (170, 16), (170, 17), (172, 15), (172, 16), + (172, 17), (174, 15), (174, 16), (174, 17), (176, 15), (176, 16), (176, 17)], + "Space Zone 1": + [(38, 26), (45, 25), (46, 25), (47, 25), (57, 24), (58, 24), (59, 24), (60, 19), (60, 23), (61, 23), + (62, 23), (63, 23), (75, 24), (89, 16), (89, 17), (89, 18), (89, 19), (90, 16), (90, 17), (90, 18), + (90, 19), (91, 16), (91, 17), (91, 18), (91, 19), (92, 16), (92, 17), (92, 18), (92, 19), (93, 16), + (93, 17), (93, 18), (93, 19), (104, 22), (105, 22), (114, 22), (115, 22), (125, 10), (126, 9), + (127, 8), (128, 8), (129, 8), (130, 8), (131, 8), (132, 9), (133, 10), (136, 10), (137, 9), + (138, 8), (139, 8), (140, 8), (141, 8), (142, 8), (143, 9), (144, 10), (147, 10), (148, 9), + (149, 8), (150, 8), (151, 8), (152, 8), (153, 8), (154, 9), (155, 10), (155, 18), (155, 19), + (155, 20), (156, 17), (156, 18), (156, 19), (156, 20), (156, 21), (157, 16), (157, 17), (157, 18), + (157, 19), (157, 20), (157, 21), (157, 22), (158, 10), (158, 16), (158, 17), (158, 18), (158, 19), + (158, 20), (158, 21), (158, 22), (159, 9), (159, 16), (159, 17), (159, 18), (159, 19), (159, 20), + (159, 21), (159, 22), (160, 8), (160, 16), (160, 17), (160, 18), (160, 19), (160, 20), (160, 21), + (160, 22), (161, 8), (161, 16), (161, 17), (161, 18), (161, 19), (161, 20), (161, 21), (161, 22), + (162, 8), (162, 17), (162, 18), (162, 19), (162, 20), (162, 21), (163, 8), (163, 18), (163, 19), + (163, 20), (164, 8), (165, 9), (166, 10), (168, 10), (169, 9), (170, 8), (171, 8), (172, 8), + (173, 8), (174, 8), (175, 9), (176, 10)], + "Space Zone Secret Course": + [(16, 22), (16, 23), (16, 24), (18, 21), (18, 22), (18, 23), (20, 21), (20, 22), (20, 23), + (22, 20), (22, 21), (22, 22), (24, 19), (24, 20), (24, 21), (26, 18), (26, 19), (26, 20), + (28, 18), (28, 19), (28, 20), (30, 17), (30, 18), (30, 19), (36, 15), (36, 16), (36, 17), + (38, 14), (38, 15), (38, 16), (40, 13), (40, 14), (40, 15), (40, 24), (41, 24), (42, 13), + (42, 14), (42, 15), (44, 12), (44, 13), (44, 14), (46, 12), (46, 13), (46, 14), (48, 12), + (48, 13), (48, 14), (50, 11), (50, 12), (50, 13), (50, 27), (51, 27), (52, 10), (52, 11), + (52, 12), (52, 27), (53, 27), (54, 27), (58, 11), (58, 12), (58, 13), (60, 12), (60, 13), + (60, 14), (62, 12), (62, 13), (62, 14), (64, 12), (64, 13), (64, 14), (66, 13), (66, 14), + (66, 15), (68, 13), (68, 14), (68, 15), (70, 14), (70, 15), (70, 16), (72, 15), (72, 16), + (72, 17), (74, 16), (74, 17), (74, 18), (80, 18), (80, 19), (80, 20), (82, 19), (82, 20), + (82, 21), (84, 19), (84, 20), (84, 21), (86, 20), (86, 21), (86, 22), (88, 21), (88, 22), + (88, 23)], + "Space Zone 2": + [(11, 13), (12, 13), (13, 13), (20, 8), (21, 8), (22, 8), (25, 5), (26, 5), (27, 5), (33, 6), + (34, 6), (35, 6), (36, 10), (37, 10), (38, 10), (45, 7), (46, 7), (47, 7), (59, 5), (60, 5), + (61, 5), (64, 3), (93, 8), (94, 8), (95, 8), (96, 11), (97, 11), (98, 11), (100, 6), (101, 6), + (102, 6), (102, 8), (120, 5), (124, 12), (124, 13), (125, 12), (125, 13), (126, 12), (126, 13), + (127, 3), (127, 12), (127, 13), (128, 3), (128, 7), (129, 3), (129, 7), (130, 7), (148, 6), + (148, 7), (148, 8), (149, 5), (149, 6), (149, 7), (149, 8), (149, 9), (150, 5), (150, 6), (150, 7), + (150, 8), (150, 9), (151, 5), (151, 6), (151, 7), (151, 8), (151, 9), (152, 5), (152, 6), (152, 7), + (152, 8), (152, 9), (153, 6), (153, 7), (153, 8), (165, 7), (165, 8), (166, 7), (166, 8), (167, 7), + (167, 8), (168, 7), (168, 8), (169, 7), (169, 8), (170, 7), (170, 8), (171, 7), (171, 8), (181, 9), + (185, 4), (200, 3), (200, 6), (200, 9), (201, 3), (201, 6), (201, 9), (202, 3), (202, 6), (202, 9), + (203, 3), (203, 6), (203, 9), (204, 3), (204, 6), (204, 9), (205, 3), (205, 6), (205, 9), (206, 3), + (206, 6), (206, 9), (207, 3), (207, 6), (207, 9), (208, 3), (208, 6), (208, 9), (209, 3), (209, 6), + (209, 9), (210, 3), (210, 6), (210, 9), (230, 12), (231, 12), (232, 12), (236, 2), (236, 3), + (236, 4), (236, 5), (237, 2), (237, 3), (237, 4), (237, 5), (238, 2), (238, 3), (238, 4), (238, 5), + (248, 10)], + "Turtle Zone 1": + [(22, 34), (27, 37), (28, 37), (29, 37), (30, 37), (31, 37), (32, 37), (33, 37), (34, 37), + (35, 37), (36, 37), (46, 32), (46, 33), (47, 32), (47, 33), (50, 32), (50, 33), (51, 32), + (51, 33), (54, 32), (54, 33), (55, 32), (55, 33), (56, 33), (57, 33), (58, 32), (58, 33), + (59, 32), (59, 33), (62, 32), (62, 33), (63, 32), (63, 33), (66, 32), (66, 33), (67, 32), + (67, 33), (73, 43), (74, 43), (75, 43), (77, 41), (78, 41), (79, 41), (81, 40), (82, 40), + (83, 40), (85, 41), (86, 41), (87, 41), (122, 36), (123, 36), (124, 36), (125, 36), (126, 36), + (127, 36), (130, 36), (131, 36), (132, 36), (133, 36), (134, 36), (135, 36), (136, 36), (137, 36), + (138, 36), (139, 36), (140, 36), (141, 36), (143, 34), (163, 36), (164, 36), (166, 36), (167, 36), + (169, 36), (170, 36), (180, 37), (181, 37), (182, 37), (183, 37), (184, 37), (185, 37), (188, 44), + (189, 44)], + "Turtle Zone 2": + [(6, 34), (11, 34), (15, 43), (48, 36), (51, 28), (56, 35), (57, 35), (59, 42), (61, 20), (62, 20), + (62, 35), (63, 20), (63, 35), (64, 20), (65, 20), (67, 35), (68, 35), (72, 39), (79, 34), + (82, 35), (87, 42), (96, 43), (105, 43), (107, 43), (109, 43), (118, 28), (121, 28), (139, 39), + (142, 39)], + "Turtle Zone Secret Course": + [(19, 27), (39, 27), (39, 28), (40, 26), (40, 27), (41, 25), (41, 27), (42, 25), (42, 27), + (43, 26), (43, 27), (44, 27), (44, 28), (48, 25), (48, 26), (48, 27), (48, 28), (49, 25), + (49, 27), (50, 25), (50, 27), (51, 25), (51, 27), (52, 26), (52, 28), (53, 27), (61, 25), + (61, 28), (62, 25), (62, 26), (62, 27), (62, 28), (63, 25), (63, 28), (64, 26), (73, 26), + (73, 27), (74, 25), (74, 28), (75, 25), (75, 28), (76, 25), (76, 28), (77, 26), (77, 27), + (82, 25), (82, 26), (82, 27), (82, 28), (83, 28), (84, 28), (85, 28), (87, 27), (89, 27), + (89, 28), (90, 26), (90, 27), (91, 25), (91, 27), (92, 25), (92, 27), (93, 26), (93, 27), + (94, 27), (94, 28), (98, 24), (98, 25), (98, 26), (98, 27), (99, 25), (100, 26), (101, 27), + (102, 24), (102, 25), (102, 26), (102, 27), (108, 24), (108, 25), (108, 26), (108, 27), + (109, 24), (109, 27), (110, 24), (110, 27), (111, 24), (111, 27), (112, 25), (112, 26), + (116, 24), (116, 27), (117, 23), (117, 26), (117, 27), (118, 23), (118, 25), (118, 27), + (119, 23), (119, 25), (119, 27), (120, 24), (120, 27), (121, 28), (122, 28), (123, 28)], + "Turtle Zone 3": + [(16, 25), (17, 25), (18, 25), (19, 25), (20, 25), (21, 25), (22, 25), (23, 25), (24, 25), + (35, 24), (36, 24), (37, 24), (38, 24), (39, 24), (40, 24), (41, 24), (42, 24), (43, 24), + (75, 28), (75, 29), (76, 28), (76, 29), (81, 28), (81, 29), (82, 28), (82, 29), (92, 26), + (93, 26), (94, 26), (98, 26), (99, 26), (100, 26), (123, 26), (124, 26), (126, 26), (127, 26), + (129, 26), (130, 26), (146, 22), (146, 29), (147, 22), (147, 29), (148, 22), (150, 22), (151, 22), + (152, 23), (152, 29), (153, 29), (154, 22), (155, 22), (156, 22), (158, 29), (159, 29), (161, 22), + (162, 22), (163, 22), (165, 22), (166, 22), (167, 22), (169, 22), (170, 22), (171, 22)], + "Mario Zone 1": + [(18, 44), (47, 36), (47, 37), (47, 38), (47, 39), (49, 36), (49, 37), (49, 38), (50, 36), (50, 37), + (50, 38), (52, 36), (52, 37), (52, 38), (53, 36), (53, 37), (53, 38), (60, 35), (60, 36), (60, 37), + (61, 35), (61, 36), (61, 37), (64, 35), (64, 36), (64, 37), (65, 35), (65, 36), (65, 37), (71, 36), + (78, 36), (78, 37), (78, 38), (98, 38), (145, 42), (146, 22), (146, 23), (146, 25), (146, 26), + (146, 42), (147, 22), (147, 23), (147, 25), (147, 26), (147, 30), (147, 31), (147, 32), (147, 42), + (148, 22), (148, 23), (148, 25), (148, 30), (148, 31), (148, 32), (148, 42), (149, 21), (149, 22), + (149, 23), (149, 24), (149, 30), (149, 31), (149, 42), (150, 21), (150, 22), (150, 23), (150, 24), + (150, 26), (150, 27), (150, 28), (150, 30), (150, 31), (150, 42), (151, 27), (151, 28), (151, 30), + (151, 31), (151, 42), (152, 27), (152, 29), (152, 30), (152, 31), (152, 42), (153, 27), (153, 29), + (153, 30), (153, 42), (154, 27), (154, 29), (154, 30), (164, 20), (167, 21), (167, 26), (167, 34), + (168, 21), (168, 25), (168, 27), (168, 33), (168, 35), (169, 20), (169, 24), (169, 28), (169, 33), + (169, 35), (170, 20), (170, 23), (170, 29), (170, 32), (170, 35), (171, 20), (171, 23), (171, 29), + (171, 32), (171, 36), (171, 37), (172, 21), (172, 22), (172, 30), (172, 31)], + "Mario Zone 2": + [(25, 24), (25, 27), (26, 24), (26, 27), (27, 24), (27, 27), (81, 27), (112, 24), (113, 24), + (114, 24), (115, 24), (116, 24), (117, 24), (118, 24), (121, 24), (122, 24), (123, 24), (124, 24), + (125, 24), (126, 24), (127, 24), (138, 26), (139, 26), (140, 24), (140, 28), (141, 24), (141, 28), + (144, 26), (145, 26), (146, 24), (146, 28), (147, 28), (151, 26), (152, 24), (152, 28), (153, 24), + (153, 28), (156, 26), (157, 26), (158, 24), (158, 28), (159, 24), (159, 28), (162, 26), (163, 26), + (164, 28), (165, 28)], + "Mario Zone 3": + [(8, 28), (11, 28), (14, 28), (17, 28), (20, 28), (23, 28), (54, 25), (100, 27), (109, 18), + (109, 19), (110, 18), (110, 19), (111, 17), (111, 18), (111, 19), (112, 17), (112, 18), (112, 19), + (127, 17), (127, 18), (127, 19), (128, 17), (128, 18), (128, 19), (129, 18), (129, 19), (130, 18), + (130, 19), (130, 20), (131, 18), (131, 19), (131, 20), (132, 18), (132, 19), (132, 20), (133, 18), + (133, 19), (133, 20), (133, 27), (134, 18), (134, 19), (134, 20), (157, 28), (158, 28), (159, 28), + (160, 28), (161, 28), (168, 28), (169, 28), (170, 28), (171, 28), (172, 28), (189, 44), (199, 28), + (200, 28), (201, 28), (202, 28), (203, 28), (214, 27), (217, 27), (220, 27), (223, 27)], + "Mario Zone 4": + [(20, 25), (114, 24), (114, 25), (114, 26), (115, 24), (115, 25), (115, 26), (115, 27), (115, 28), + (115, 29), (116, 24), (116, 25), (116, 26), (116, 27), (116, 29), (117, 24), (117, 25), (117, 26), + (117, 27), (117, 28), (117, 29), (118, 24), (118, 25), (118, 26), (118, 27), (118, 28), (118, 29), + (119, 24), (119, 25), (119, 27), (119, 28), (119, 29), (120, 24), (120, 25), (120, 26), (120, 27), + (120, 28), (120, 29), (121, 24), (121, 25), (121, 26), (121, 27), (121, 28), (121, 29), (122, 12), + (122, 24), (122, 25), (122, 26), (122, 27), (122, 29), (123, 12), (123, 24), (123, 25), (123, 26), + (123, 27), (123, 28), (123, 29), (124, 12), (124, 24), (124, 25), (124, 26), (124, 27), (124, 28), + (124, 29), (125, 12), (179, 12)], + "Pumpkin Zone 1": + [(23, 12), (55, 24), (55, 26), (56, 27), (57, 24), (57, 26), (63, 24), (63, 26), (64, 27), + (65, 24), (65, 26), (71, 24), (71, 26), (72, 27), (73, 24), (73, 26), (79, 24), (79, 26), + (80, 27), (81, 24), (81, 26), (86, 25), (86, 27), (92, 4), (93, 27), (95, 25), (95, 27), (98, 4), + (102, 26), (102, 28), (104, 4), (104, 26), (104, 28), (165, 14), (166, 15), (171, 20), (172, 21), + (173, 22), (175, 24), (176, 25), (177, 26), (179, 28), (180, 29), (189, 6)], + "Pumpkin Zone 2": + [(34, 26), (40, 21), (41, 21), (42, 21), (43, 21), (48, 20), (49, 20), (50, 20), (50, 41), + (51, 20), (51, 41), (52, 41), (53, 41), (54, 41), (56, 21), (57, 21), (58, 21), (59, 21), + (61, 41), (62, 41), (64, 20), (65, 20), (66, 20), (67, 20), (114, 36), (115, 35), (115, 36), + (116, 34), (116, 35), (116, 36), (132, 20), (132, 21), (132, 22), (132, 23), (132, 24), + (144, 23), (169, 27)], + "Pumpkin Zone 3": + [(18, 26), (20, 26), (22, 26), (24, 26), (26, 26), (31, 18), (32, 18), (33, 18), (34, 18), + (35, 18), (36, 18), (37, 18), (38, 18), (39, 18), (40, 18), (41, 18), (42, 18), (48, 24), + (52, 20), (52, 24), (56, 24), (87, 27), (88, 27), (89, 27), (90, 27), (94, 27), (95, 27), + (96, 27), (97, 27), (101, 27), (102, 27), (103, 27), (104, 27), (104, 42), (108, 27), (109, 27), + (110, 27), (111, 27), (115, 27), (116, 27), (117, 27), (118, 27), (134, 35), (134, 41), + (135, 35), (135, 41), (136, 35), (136, 41), (137, 35), (137, 41), (138, 35), (138, 41), + (139, 35), (139, 41), (140, 41), (225, 38), (226, 37), (227, 36), (227, 37), (227, 38), + (227, 39), (227, 40), (227, 41), (228, 37), (229, 38)], + "Pumpkin Zone Secret Course 1": + [(14, 15), (16, 9), (16, 10), (16, 11), (16, 12), (16, 13), (16, 14), (16, 15), (16, 16), + (17, 9), (17, 10), (17, 11), (17, 12), (17, 13), (17, 14), (17, 15), (17, 16), (18, 9), + (18, 10), (18, 11), (18, 12), (18, 13), (18, 14), (18, 15), (18, 16), (19, 9), (19, 10), + (19, 11), (19, 12), (19, 13), (19, 14), (19, 15), (19, 16), (20, 9), (20, 10), (20, 11), + (20, 12), (20, 13), (20, 14), (20, 15), (20, 16), (21, 9), (21, 10), (21, 11), (21, 12), + (21, 13), (21, 14), (21, 15), (21, 16), (22, 9), (22, 10), (22, 11), (22, 12), (22, 13), + (22, 14), (22, 15), (22, 16), (23, 9), (23, 10), (23, 11), (23, 12), (23, 13), (23, 14), + (23, 15), (23, 16), (24, 9), (24, 10), (24, 11), (24, 12), (24, 13), (24, 14), (24, 15), + (24, 16), (25, 9), (25, 10), (25, 11), (25, 12), (25, 13), (25, 14), (25, 15), (25, 16), + (26, 9), (26, 10), (26, 11), (26, 12), (26, 13), (26, 14), (26, 15), (27, 16), (28, 9), + (28, 10), (28, 11), (28, 12), (28, 13), (28, 14), (28, 15), (28, 16), (29, 9), (29, 10), + (29, 11), (29, 12), (29, 13), (29, 14), (29, 15), (29, 16), (30, 9), (30, 10), (30, 11), + (30, 12), (30, 13), (30, 14), (30, 15), (30, 16), (31, 9), (31, 10), (31, 11), (31, 12), + (31, 13), (31, 14), (31, 15), (31, 16), (32, 9), (32, 10), (32, 11), (32, 12), (32, 13), + (32, 14), (32, 15), (32, 16), (33, 9), (33, 10), (33, 11), (33, 12), (33, 13), (33, 14), + (33, 15), (33, 16), (34, 9), (34, 10), (34, 11), (34, 12), (34, 13), (34, 14), (34, 15), + (34, 16), (35, 9), (35, 10), (35, 11), (35, 12), (35, 13), (35, 14), (35, 15), (35, 16), + (36, 9), (36, 10), (36, 11), (36, 12), (36, 13), (36, 14), (36, 15), (36, 16), (37, 9), + (37, 10), (37, 11), (37, 12), (37, 13), (37, 14), (37, 15), (37, 16), (39, 16), (40, 9), + (40, 10), (40, 11), (40, 12), (40, 13), (40, 14), (40, 15), (40, 16), (41, 9), (41, 10), + (41, 11), (41, 12), (41, 13), (41, 14), (41, 15), (41, 16), (42, 9), (42, 10), (42, 11), + (42, 12), (42, 13), (42, 14), (42, 15), (42, 16), (43, 9), (43, 10), (43, 11), (43, 12), + (43, 13), (43, 14), (43, 15), (43, 16), (44, 9), (44, 10), (44, 11), (44, 12), (44, 13), + (44, 14), (44, 15), (44, 16), (45, 9), (45, 10), (45, 11), (45, 12), (45, 13), (45, 14), + (45, 15), (45, 16), (46, 9), (46, 10), (46, 11), (46, 12), (46, 13), (46, 14), (46, 15), + (46, 16), (47, 9), (47, 10), (47, 11), (47, 12), (47, 13), (47, 14), (47, 15), (47, 16), + (48, 9), (48, 10), (48, 11), (48, 12), (48, 13), (48, 14), (48, 15), (48, 16), (49, 9), + (49, 10), (49, 11), (49, 12), (49, 13), (49, 14), (49, 15), (49, 16), (52, 9), (52, 10), + (52, 11), (52, 12), (52, 13), (52, 14), (52, 15), (52, 16), (53, 9), (53, 10), (53, 11), + (53, 12), (53, 13), (53, 14), (53, 15), (53, 16), (54, 9), (54, 10), (54, 11), (54, 12), + (54, 13), (54, 14), (54, 15), (54, 16), (55, 9), (55, 10), (55, 11), (55, 12), (55, 13), + (55, 14), (55, 15), (55, 16), (56, 9), (56, 10), (56, 11), (56, 12), (56, 13), (56, 14), + (56, 15), (56, 16), (57, 9), (57, 10), (57, 11), (57, 12), (57, 13), (57, 14), (57, 15), + (57, 16), (58, 9), (58, 10), (58, 11), (58, 12), (58, 13), (58, 14), (58, 15), (58, 16), + (59, 9), (59, 10), (59, 11), (59, 12), (59, 13), (59, 14), (59, 15), (59, 16), (60, 9), + (60, 10), (60, 11), (60, 12), (60, 13), (60, 14), (60, 15), (60, 16), (61, 9), (61, 10), + (61, 11), (61, 12), (61, 13), (61, 14), (61, 15), (61, 16), (64, 9), (64, 10), (64, 11), + (64, 12), (64, 13), (64, 14), (64, 15), (64, 16), (65, 9), (65, 10), (65, 11), (65, 12), + (65, 13), (65, 14), (65, 15), (65, 16), (66, 9), (66, 10), (66, 11), (66, 12), (66, 13), + (66, 14), (66, 15), (66, 16), (67, 9), (67, 10), (67, 11), (67, 12), (67, 13), (67, 14), + (67, 15), (67, 16), (68, 9), (68, 10), (68, 11), (68, 12), (68, 13), (68, 14), (68, 15), + (68, 16), (69, 9), (69, 10), (69, 11), (69, 12), (69, 13), (69, 14), (69, 15), (69, 16), + (70, 9), (70, 10), (70, 11), (70, 12), (70, 13), (70, 14), (70, 15), (70, 16), (71, 9), + (71, 10), (71, 11), (71, 12), (71, 13), (71, 14), (71, 15), (71, 16), (72, 9), (72, 10), + (72, 11), (72, 12), (72, 13), (72, 14), (72, 15), (72, 16), (73, 9), (73, 10), (73, 11), + (73, 12), (73, 13), (73, 14), (73, 15), (73, 16)], + "Pumpkin Zone Secret Course 2": + [(12, 6), (72, 7), (73, 7), (80, 7), (81, 7), (85, 8), (90, 10), (91, 10), (94, 10), + (95, 10), (98, 9), (99, 9), (102, 9), (103, 9)], + "Pumpkin Zone 4": + [(18, 28), (19, 28), (20, 28), (21, 28), (83, 37), (83, 38), (84, 37), (84, 38), (85, 37), + (85, 38), (85, 39), (86, 37), (87, 37), (87, 40), (88, 37), (88, 38), (88, 39), (88, 40), + (89, 37), (89, 38), (89, 39), (89, 40), (90, 37), (90, 38), (91, 37), (91, 38), (92, 37), + (92, 38), (92, 39), (92, 40), (93, 23), (93, 37), (93, 40), (94, 23), (94, 37), (94, 40), + (103, 23), (104, 23), (113, 23), (114, 23), (169, 30), (170, 28), (170, 30), (171, 26), + (171, 28), (171, 30), (172, 24), (172, 26), (172, 28), (172, 30), (173, 24), (173, 26), + (173, 28), (173, 30), (174, 26), (174, 28), (174, 30), (175, 28), (175, 30), (176, 30), + (198, 37), (198, 38), (199, 37), (199, 38), (204, 37), (204, 38), (205, 37), (205, 38), + (210, 37), (210, 38), (211, 37), (211, 38), (216, 37), (216, 38), (217, 37), (217, 38)], + "Macro Zone 1": + [(22, 32), (22, 33), (22, 34), (23, 20), (23, 21), (23, 22), (23, 38), (23, 39), (23, 40), (24, 26), + (24, 27), (24, 28), (39, 42), (40, 41), (41, 40), (42, 39), (49, 43), (62, 42), (62, 43), (62, 44), + (68, 42), (68, 43), (68, 44), (75, 42), (75, 43), (75, 44), (84, 40), (84, 41), (84, 42), (87, 39), + (89, 42), (89, 43), (89, 44), (107, 42), (108, 42), (109, 42), (118, 42), (119, 42), (120, 42), + (121, 42), (122, 42), (128, 42), (128, 43), (130, 42), (130, 43), (134, 42), (134, 43), (140, 42), + (141, 42), (142, 42), (143, 42), (144, 42), (154, 42), (155, 42), (156, 42), (163, 22), (163, 23), + (164, 21), (164, 22), (164, 23), (165, 22), (165, 23), (166, 21), (166, 22), (166, 23), (167, 22), + (167, 23), (168, 21), (168, 22), (168, 23), (169, 22), (169, 23), (170, 21), (170, 22), (170, 23), + (171, 22), (171, 23), (177, 40), (182, 40), (189, 41), (189, 42), (189, 43), (189, 44), (189, 45), + (205, 46), (206, 46), (208, 37), (209, 37), (212, 41), (213, 41), (214, 41), (215, 41), (216, 41), + (220, 37), (221, 37), (224, 46), (225, 46), (234, 43), (246, 38), (246, 39), (246, 40), (246, 41), + (246, 42), (246, 43)], + "Macro Zone 2": + [(18, 28), (19, 27), (22, 28), (23, 27), (25, 26), (27, 27), (28, 27), (31, 27), (32, 27), (41, 29), + (42, 29), (43, 29), (55, 29), (57, 29), (60, 29), (62, 29), (69, 27), (70, 27), (71, 27), (74, 27), + (75, 27), (76, 27), (79, 27), (80, 27), (81, 27), (84, 27), (85, 27), (86, 27), (99, 40), + (137, 37), (180, 40), (181, 8), (182, 8), (183, 8), (184, 8), (185, 8), (186, 8), (187, 8), + (188, 8), (189, 8), (190, 8), (191, 8), (192, 8), (193, 8), (194, 8), (195, 8), (196, 8), (197, 8), + (198, 8), (199, 8), (200, 8), (201, 8), (202, 8), (204, 8), (205, 8), (206, 8), (207, 8), (208, 8), + (209, 8), (210, 8), (211, 8), (212, 8), (213, 8), (215, 8), (216, 8), (217, 8), (217, 11), + (218, 8), (218, 9), (218, 10), (218, 11), (218, 12), (219, 11)], + "Macro Zone 3": + [(24, 23), (37, 28), (38, 28), (39, 28), (40, 28), (57, 30), (58, 30), (59, 30), (65, 17), (65, 18), + (65, 19), (66, 17), (66, 18), (66, 19), (67, 17), (67, 18), (67, 19), (68, 17), (68, 18), (68, 19), + (69, 17), (69, 18), (69, 19), (70, 17), (70, 18), (70, 19), (73, 17), (73, 18), (73, 19), (74, 17), + (74, 18), (74, 19), (75, 17), (75, 18), (75, 19), (76, 17), (76, 18), (76, 19), (77, 17), (77, 18), + (77, 19), (78, 17), (78, 18), (78, 19), (85, 43), (95, 17), (95, 18), (95, 19), (95, 20), (96, 17), + (96, 18), (96, 19), (96, 20), (97, 17), (97, 18), (97, 19), (97, 20), (98, 17), (98, 18), (98, 19), + (98, 20), (100, 17), (100, 18), (100, 19), (100, 20), (101, 17), (101, 18), (101, 19), (101, 20), + (103, 42), (104, 42), (105, 42), (106, 42), (107, 42), (116, 42), (117, 42), (118, 42), (119, 42), + (120, 42), (121, 42), (122, 42), (129, 19), (131, 42), (132, 42), (133, 42), (134, 42), (135, 42), + (136, 42), (165, 21), (165, 22), (166, 21), (166, 22), (171, 21), (171, 22), (172, 21), (172, 22), + (176, 20), (176, 21), (176, 22), (179, 20), (179, 21), (179, 22), (183, 21), (183, 22), (184, 21), + (184, 22), (194, 27), (194, 28), (197, 27), (197, 28), (200, 27), (200, 28), (203, 25), (203, 27), + (203, 28), (205, 18), (205, 19), (206, 18), (206, 19)], + "Macro Zone 4": + [(16, 28), (34, 28), (39, 28), (39, 29), (39, 30), (40, 28), (40, 29), (40, 30), (41, 28), (41, 29), + (41, 30), (62, 29), (63, 29), (64, 29), (65, 29), (66, 29), (67, 29), (68, 29), (69, 29), (81, 17), + (81, 18), (82, 17), (82, 18), (83, 17), (83, 18), (84, 17), (84, 18), (85, 17), (85, 18), (86, 17), + (86, 18), (87, 17), (87, 18), (87, 28), (88, 17), (88, 18), (114, 28), (144, 22), (146, 27), + (146, 28), (147, 27), (147, 28), (148, 27), (148, 28), (149, 27), (149, 28), (150, 27), (150, 28), + (151, 27), (151, 28), (152, 27), (152, 28), (153, 27), (153, 28), (154, 27), (154, 28), (155, 27), + (155, 28), (156, 27), (156, 28), (157, 27), (157, 28), (158, 27), (158, 28)], + "Macro Zone Secret Course": + [(21, 24), (70, 27), (70, 28), (71, 27), (71, 28), (72, 27), (72, 28), (73, 27), (73, 28), + (74, 27), (74, 28), (75, 27), (75, 28), (76, 24), (76, 25), (76, 26), (76, 27), (76, 28), + (77, 24), (77, 25), (77, 26), (77, 27), (77, 28), (78, 24), (78, 25), (78, 26), (78, 27), + (78, 28), (79, 24), (79, 25), (79, 26), (79, 27), (80, 25), (80, 26), (81, 25), (81, 26), + (88, 25), (108, 30)], + "Mario's Castle": + [(7, 25), (160, 44), (167, 28), (247, 26)], +} +powerup_coords = { + "Mushroom Zone": [(42, 28), (151, 28), (152, 28), (188, 28)], + "Scenic Course": [(39, 28), (72, 28), (117, 28)], + "Tree Zone 1": [(119, 28), (152, 28)], + "Tree Zone 2": [(43, 10), (61, 9), (51, 28), (130, 7), (182, 3), (136, 43)], + "Tree Zone Secret Course": [(17, 23), (100, 23), (159, 23)], + "Tree Zone 3": [(26, 40), (77, 24)], + "Tree Zone 4": [(28, 27), (105, 25), (136, 22), (171, 10)], + "Tree Zone 5": [(123, 39), (138, 39), (146, 36)], + "Pumpkin Zone 1": [(23, 12), (72, 27), (98, 4), (189, 6)], + "Pumpkin Zone 2": [(144, 23)], + "Pumpkin Zone Secret Course 1": [(14, 15)], + "Pumpkin Zone 3": [(52, 20), (104, 42), (139, 35), (140, 41)], + "Pumpkin Zone Secret Course 2": [(12, 6), (85, 8)], + "Pumpkin Zone 4": [(83, 38), (94, 40), (104, 23)], + "Mario Zone 1": [(18, 44), (98, 38), (145, 42), (164, 20)], + "Mario Zone 2": [(81, 27)], + "Mario Zone 3": [(54, 25), (100, 27), (134, 18), (189, 44), (214, 27)], + "Mario Zone 4": [(20, 25), (124, 12), (179, 12)], + "Turtle Zone 1": [(22, 34), (56, 33), (57, 33), (143, 34), (189, 44)], + "Turtle Zone 2": [(82, 35), (139, 39), ], + "Turtle Zone Secret Course": [(19, 27), (53, 27), (64, 26), (87, 27), (121, 28), (122, 28), (123, 28)], + "Turtle Zone 3": [(39, 24), (94, 26), (152, 23)], + "Hippo Zone": [(3, 3), (2, 20), (15, 26), (16, 26), (29, 21), (86, 22), (137, 13)], + "Space Zone 1": [(75, 24), (114, 22)], + # "Space Zone Secret Course": [], + "Space Zone 2": [(64, 3), (102, 8), (120, 5), (207, 6), (210, 9), (248, 10)], + "Macro Zone 1": [(49, 43), (87, 39), (177, 40), (164, 21), (166, 21), (170, 21), (234, 43)], + "Macro Zone 2": [(25, 26), (99, 40), (137, 37), (180, 40)], + "Macro Zone 3": [(24, 23), (85, 43), (129, 19), (203, 25)], + "Macro Zone 4": [(16, 28), (87, 28), (144, 22)], + "Macro Zone Secret Course": [(21, 24), (88, 25), (108, 30)], + "Mario's Castle": [(7, 25), (160, 44), (167, 28), (247, 26)] +} +for zone, coords_list in powerup_coords.items(): + for coords in coords_list: + coins_coords[zone].remove(coords) + +location_name_to_id = {location_name: ID for ID, location_name in enumerate(locations, START_IDS)} +loc_id = START_IDS + len(locations) +for level, coin_coords in coins_coords.items(): + for i in range(1, len(coin_coords) + 1): + location_name_to_id[f"{level} - {i} Coin{'s' if i > 1 else ''}"] = loc_id + loc_id += 1 + +# eligible_levels = [0, 1, 2, 3, 5, 8, 9, 11, 13, 14, 16, 19, 20, 22, 23, 25, 30, 31] + +level_id_to_name = { + 0: "Mushroom Zone", 25: "Scenic Course", 1: "Tree Zone 1", 2: "Tree Zone 2", 4: "Tree Zone 3", 3: "Tree Zone 4", + 5: "Tree Zone 5", 29: "Tree Zone Secret Course", 17: "Hippo Zone", 18: "Space Zone 1", + 28: "Space Zone Secret Course", 19: "Space Zone 2", 20: "Macro Zone 1", 21: "Macro Zone 2", 22: "Macro Zone 3", + 23: "Macro Zone 4", 30: "Macro Zone Secret Course", 6: "Pumpkin Zone 1", 7: "Pumpkin Zone 2", + 8: "Pumpkin Zone 3", 9: "Pumpkin Zone 4", 27: "Pumpkin Zone Secret Course 1", 31: "Pumpkin Zone Secret Course 2", + 10: "Mario Zone 1", 11: "Mario Zone 2", 12: "Mario Zone 3", 13: "Mario Zone 4", 14: "Turtle Zone 1", + 15: "Turtle Zone 2", 16: "Turtle Zone 3", 26: "Turtle Zone Secret Course", 24: "Mario's Castle" +} + +level_name_to_id = {name: level_id for level_id, name in level_id_to_name.items()} + +auto_scroll_max = { + "Mushroom Zone": 84, + "Hippo Zone": 160, + "Tree Zone 1": 87, + "Tree Zone 2": 68, + "Tree Zone 3": 4, + "Tree Zone 4": 28, + "Tree Zone 5": 22, + "Space Zone 1": 72, + "Space Zone 2": 113, + "Space Zone Secret Course": 96, + "Macro Zone 1": 74, + "Macro Zone 2": 27, + "Macro Zone 3": 63, + "Macro Zone 4": 59, + "Pumpkin Zone 1": (0, 12), + "Pumpkin Zone 2": 23, + "Pumpkin Zone 3": 50, + "Pumpkin Zone 4": 45, + "Pumpkin Zone Secret Course 1": 172, + "Mario Zone 1": 68, + "Mario Zone 3": 29, + "Mario Zone 4": 60, + "Turtle Zone 1": 66, + "Turtle Zone 2": 8, +} diff --git a/worlds/marioland2/logic.py b/worlds/marioland2/logic.py new file mode 100644 index 000000000000..9934535572f9 --- /dev/null +++ b/worlds/marioland2/logic.py @@ -0,0 +1,608 @@ +from .locations import level_name_to_id + + +def is_auto_scroll(state, player, level): + level_id = level_name_to_id[level] + if state.has_any(["Cancel Auto Scroll", f"Cancel Auto Scroll - {level}"], player): + return False + return state.multiworld.worlds[player].auto_scroll_levels[level_id] > 0 + + +def has_pipe_right(state, player): + return state.has_any(["Pipe Traversal - Right", "Pipe Traversal"], player) + + +def has_pipe_left(state, player): + return state.has_any(["Pipe Traversal - Left", "Pipe Traversal"], player) + + +def has_pipe_down(state, player): + return state.has_any(["Pipe Traversal - Down", "Pipe Traversal"], player) + + +def has_pipe_up(state, player): + return state.has_any(["Pipe Traversal - Up", "Pipe Traversal"], player) + + +def has_level_progression(state, item, player, count=1): + return state.count(item, player) + (state.count(item + " x2", player) * 2) >= count + + +def mushroom_zone_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mushroom Zone") + reachable_coins = 38 + if state.has_any(["Mushroom", "Fire Flower"], player) or not auto_scroll: + # Was able to get all but 1, being lenient. + reachable_coins += 2 + if has_pipe_down(state, player): + # There's 24 in each of the underground sections. + # The first one requires missing some question mark blocks if auto scrolling (the last +4). + # If you go in the second without pipe up, you can get everything except the last 5 plus the ones in the first + # underground section. + reachable_coins += 19 + if has_pipe_up(state, player) or not auto_scroll: + reachable_coins += 5 + if has_pipe_up(state, player): + reachable_coins += 20 + if not auto_scroll: + reachable_coins += 4 + return coins <= reachable_coins + + +def tree_zone_1_coins(state, player, coins): + return coins <= 87 or not is_auto_scroll(state, player, "Tree Zone 1") + + +def tree_zone_2_normal_exit(state, player): + return has_pipe_right(state, player) or state.has("Tree Zone 2 Midway Bell", player) + + +def tree_zone_2_secret_exit(state, player): + return has_pipe_right(state, player) and state.has("Carrot", player) + + +def tree_zone_2_midway_bell(state, player): + return has_pipe_right(state, player) or state.has("Tree Zone 2 Midway Bell", player) + + +def tree_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 2") + reachable_coins = 18 + if has_pipe_right(state, player): + reachable_coins += 38 + if state.has("Carrot", player): + reachable_coins += 12 + if not auto_scroll: + reachable_coins += 30 + elif state.has("Tree Zone 2 Midway Bell", player): + reachable_coins = 30 + if not auto_scroll: + reachable_coins += 8 + return coins <= reachable_coins + + +def tree_zone_3_normal_exit(state, player): + return not is_auto_scroll(state, player, "Tree Zone 3") + + +def tree_zone_3_coins(state, player, coins): + if is_auto_scroll(state, player, "Tree Zone 3"): + return coins <= 4 + if coins <= 19: + return True + elif state.has_any(["Mushroom", "Fire Flower"], player) and coins <= 21: + return True + return state.has("Carrot", player) + + +def tree_zone_4_normal_exit(state, player): + return has_pipe_down(state, player) and tree_zone_4_midway_bell(state, player) + + +def tree_zone_4_midway_bell(state, player): + return ((has_pipe_right(state, player) and has_pipe_up(state, player)) + or state.has("Tree Zone 4 Midway Bell", player)) + + +def tree_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 4") + reachable_coins = 0 + if has_pipe_up(state, player): + reachable_coins += 14 + if has_pipe_right(state, player): + reachable_coins += 4 + if has_pipe_down(state, player): + reachable_coins += 10 + if not auto_scroll: + reachable_coins += 46 + elif state.has("Tree Zone 4 Midway Bell", player): + if not auto_scroll: + if has_pipe_left(state, player): + reachable_coins += 18 + if has_pipe_down(state, player): + reachable_coins += 10 + if has_pipe_up(state, player): + reachable_coins += 46 + elif has_pipe_down(state, player): + reachable_coins += 10 + return coins <= reachable_coins + + +def tree_zone_5_boss(state, player): + return has_pipe_right(state, player) and (has_pipe_up(state, player) or state.has("Carrot", player)) + + +def tree_zone_5_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Tree Zone 5") + reachable_coins = 0 + # Not actually sure if these platforms can be randomized / can make the coin blocks unreachable from below + if ((not state.multiworld.worlds[player].options.randomize_platforms) + or state.has_any(["Mushroom", "Fire Flower"], player)): + reachable_coins += 2 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 2 + if state.has("Carrot", player): + reachable_coins += 18 + if has_pipe_up(state, player) and not auto_scroll: + reachable_coins += 13 + elif has_pipe_up(state, player): + reachable_coins += 13 + return coins <= reachable_coins + + +def pumpkin_zone_1_normal_exit(state, player): + return pumpkin_zone_1_midway_bell(state, player) + + +def pumpkin_zone_1_midway_bell(state, player): + return ((has_pipe_down(state, player) and not is_auto_scroll(state, player, "Pumpkin Zone 1")) + or state.has("Pumpkin Zone 1 Midway Bell", player)) + + +def pumpkin_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 1") + if auto_scroll: + return coins <= 12 and state.has("Pumpkin Zone 1 Midway Bell", player) + reachable_coins = 0 + if state.has("Pumpkin Zone 1 Midway Bell", player) or has_pipe_down(state, player): + reachable_coins += 38 + if has_pipe_up(state, player): + reachable_coins += 2 + return coins <= reachable_coins + + +def pumpkin_zone_2_normal_exit(state, player): + return has_pipe_down(state, player) and has_pipe_up(state, player) and has_pipe_right(state, player) and state.has( + "Water Physics", player) and not is_auto_scroll(state, player, "Pumpkin Zone 2") + + +def pumpkin_zone_2_secret_exit(state, player): + return pumpkin_zone_2_normal_exit(state, player) and state.has_any(["Mushroom", "Fire Flower"], player) + + +def pumpkin_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 2") + reachable_coins = 17 + if has_pipe_down(state, player): + if not auto_scroll: + reachable_coins += 7 + if (has_pipe_up(state, player) or auto_scroll) and state.has("Water Physics", player): + reachable_coins += 6 + if has_pipe_right(state, player) and not auto_scroll: + reachable_coins += 1 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + return coins <= reachable_coins + + +def pumpkin_zone_secret_course_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone Secret Course 1") + # We'll be a bit forgiving. I was able to reach 43 while small. + if coins <= 40: + return True + if state.has("Carrot", player): + if auto_scroll: + return coins <= 172 + return True + return False + + +def pumpkin_zone_3_secret_exit(state, player): + return state.has("Carrot", player) + + +def pumpkin_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 3") + reachable_coins = 38 + if has_pipe_up(state, player) and ((not auto_scroll) or has_pipe_down(state, player)): + reachable_coins += 12 + if has_pipe_down(state, player) and not auto_scroll: + reachable_coins += 11 + return coins <= reachable_coins + + +def pumpkin_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def pumpkin_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Pumpkin Zone 4") + reachable_coins = 29 + if has_pipe_down(state, player): + if auto_scroll: + if has_pipe_up(state, player): + reachable_coins += 16 + else: + reachable_coins += 4 + else: + reachable_coins += 28 + # both sets of coins are down, but you need pipe up to return to go down to the next set in one playthrough + if has_pipe_up(state, player): + reachable_coins += 16 + return coins <= reachable_coins + + +def mario_zone_1_normal_exit(state, player): + if has_pipe_right(state, player): + if state.has_any(["Mushroom", "Fire Flower", "Carrot", "Mario Zone 1 Midway Bell"], player): + return True + if is_auto_scroll(state, player, "Mario Zone 1"): + return True + return False + + +def mario_zone_1_midway_bell(state, player): + # It is possible to get as small mario, but it is a very precise jump and you will die afterward. + return ((state.has_any(["Mushroom", "Fire Flower", "Carrot"], player) and has_pipe_right(state, player)) + or state.has("Mario Zone 1 Midway Bell", player)) + + +def mario_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mario Zone 1") + reachable_coins = 0 + if has_pipe_right(state, player) or (has_pipe_left(state, player) + and state.has("Mario Zone 1 Midway Bell", player) and not auto_scroll): + reachable_coins += 32 + if has_pipe_right(state, player) and (state.has_any(["Mushroom", "Fire Flower", "Carrot"], player) + or not auto_scroll): + reachable_coins += 8 + # coins from end section. I was able to get 13 as small mario, giving some leniency + if state.has("Carrot", player): + reachable_coins += 28 + else: + reachable_coins += 12 + if state.has("Fire Flower", player) and not auto_scroll: + reachable_coins += 46 + return coins <= reachable_coins + + +def mario_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Mario Zone 3") + reachable_coins = 10 + if state.has("Carrot", player): + reachable_spike_coins = 15 + else: + sprites = state.multiworld.worlds[player].sprite_data["Mario Zone 3"] + reachable_spike_coins = min(3, len({sprites[i]["sprite"] == "Claw Grabber" for i in (17, 18, 25)}) + + state.has("Mushroom", player) + state.has("Fire Flower", player)) * 5 + reachable_coins += reachable_spike_coins + if not auto_scroll: + reachable_coins += 10 + if state.has("Fire Flower", player): + reachable_coins += 22 + if auto_scroll: + reachable_coins -= 3 + reachable_spike_coins + return coins <= reachable_coins + + +def mario_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def mario_zone_4_coins(state, player, coins): + return coins <= 60 or not is_auto_scroll(state, player, "Mario Zone 4") + + +def not_blocked_by_sharks(state, player): + sharks = [state.multiworld.worlds[player].sprite_data["Turtle Zone 1"][i]["sprite"] + for i in (27, 28)].count("Shark") + if state.has("Carrot", player) or not sharks: + return True + if sharks == 2: + return state.has_all(["Mushroom", "Fire Flower"], player) + if sharks == 1: + return state.has_any(["Mushroom", "Fire Flower"], player) + return False + + +def turtle_zone_1_normal_exit(state, player): + return not_blocked_by_sharks(state, player) + + +def turtle_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Turtle Zone 1") + reachable_coins = 30 + if not_blocked_by_sharks(state, player): + reachable_coins += 13 + if auto_scroll: + reachable_coins -= 1 + if state.has("Water Physics", player) or state.has("Carrot", player): + reachable_coins += 10 + if state.has("Carrot", player): + reachable_coins += 24 + if auto_scroll: + reachable_coins -= 10 + return coins <= reachable_coins + + +def turtle_zone_2_normal_exit(state, player): + return (has_pipe_up(state, player) and has_pipe_down(state, player) and has_pipe_right(state, player) and + has_pipe_left(state, player) and state.has("Water Physics", player) + and not is_auto_scroll(state, player, "Turtle Zone 2")) + + +def turtle_zone_2_secret_exit(state, player): + return (has_pipe_up(state, player) and state.has("Water Physics", player) + and not is_auto_scroll(state, player, "Turtle Zone 2")) + + +def turtle_zone_2_midway_bell(state, player): + return ((state.has("Water Physics", player) and not is_auto_scroll(state, player, "Turtle Zone 2")) + or state.has("Turtle Zone 2 Midway Bell", player)) + + +def turtle_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Turtle Zone 2") + reachable_coins = 2 + if auto_scroll: + if state.has("Water Physics", player): + reachable_coins += 6 + else: + reachable_coins += 2 + if state.has("Water Physics", player): + reachable_coins += 20 + elif state.has("Turtle Zone 2 Midway Bell", player): + reachable_coins += 4 + if (has_pipe_right(state, player) and has_pipe_down(state, player) + and state.has_any(["Water Physics", "Turtle Zone 2 Midway Bell"], player)): + reachable_coins += 1 + if has_pipe_left(state, player) and has_pipe_up(state, player): + reachable_coins += 1 + if state.has("Water Physics", player): + reachable_coins += 1 + return coins <= reachable_coins + + +def turtle_zone_secret_course_normal_exit(state, player): + return state.has_any(["Fire Flower", "Carrot"], player) + + +def turtle_zone_secret_course_coins(state, player, coins): + reachable_coins = 53 + if state.has("Carrot", player): + reachable_coins += 44 + elif state.has("Fire Flower", player): + reachable_coins += 36 # was able to get 38, some leniency + return coins <= reachable_coins + + +def turtle_zone_3_boss(state, player): + return has_pipe_right(state, player) + + +def turtle_zone_3_coins(state, player, coins): + return state.has_any(["Water Physics", "Mushroom", "Fire Flower", "Carrot"], player) or coins <= 51 + + +def hippo_zone_normal_or_secret_exit(state, player): + return (state.has_any(["Hippo Bubble", "Water Physics"], player) + or (state.has("Carrot", player) + and not is_auto_scroll(state, player, "Hippo Zone"))) + + +def hippo_zone_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Hippo Zone") + # This is all somewhat forgiving. + reachable_coins = 4 + if auto_scroll: + if state.has("Hippo Bubble", player): + reachable_coins = 160 + elif state.has("Carrot", player): + reachable_coins = 90 + elif state.has("Water Physics", player): + reachable_coins = 28 + else: + if state.has_any(["Water Physics", "Hippo Bubble", "Carrot"], player): + reachable_coins += 108 + if state.has_any(["Mushroom", "Fire Flower", "Hippo Bubble"], player): + reachable_coins += 6 + if state.has_all(["Fire Flower", "Water Physics"], player): + reachable_coins += 1 + if state.has("Hippo Bubble", player): + reachable_coins += 52 + return coins <= reachable_coins + + +def space_zone_1_normal_exit(state, player): + # It is possible, however tricky, to beat the Moon Stage without Carrot or Space Physics. + # However, it requires somewhat precisely jumping off enemies. Enemy shuffle may make this impossible. + # Instead, I will just always make one or the other required, since it is difficult without them anyway. + return state.has_any(["Space Physics", "Carrot"], player) + + +def space_zone_1_secret_exit(state, player): + # One or the other is actually necessary for the secret exit. + return state.has_any(["Space Physics", "Carrot"], player) and not is_auto_scroll(state, player, "Space Zone 1") + + +def space_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Space Zone 1") + if auto_scroll: + reachable_coins = 12 + if state.has_any(["Carrot", "Space Physics"], player): + reachable_coins += 20 + # If you have Space Physics, you can't make it up to the upper section. We have to assume you might have it, + # so the coins up there must be out of logic if there is auto scrolling. + if state.has("Space Physics", player): + reachable_coins += 40 + return coins <= reachable_coins + return (coins <= 21 or (coins <= 50 and state.has_any(["Mushroom", "Fire Flower"], player)) + or state.has_any(["Carrot", "Space Physics"], player)) + + +def space_zone_2_midway_bell(state, player): + return state.has_any(["Space Physics", "Space Zone 2 Midway Bell", "Mushroom", "Fire Flower", "Carrot"], player) + + +def space_zone_2_boss(state, player): + if has_pipe_right(state, player): + if state.has("Space Physics", player): + return True + if (state.has("Space Zone 2 Midway Bell", player) + or not state.multiworld.worlds[player].options.shuffle_midway_bells): + # Reaching the midway bell without space physics requires taking damage once. Reaching the end pipe from the + # midway bell also requires taking damage once. + if state.has_any(["Mushroom", "Fire Flower", "Carrot"], player): + return True + else: + # With no midway bell, you'll have to be able to take damage twice. + if state.has("Mushroom", player) and state.has_any(["Fire Flower", "Carrot"], player): + return True + return False + + +def space_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Space Zone 2") + reachable_coins = 12 + if state.has_any(["Mushroom", "Fire Flower", "Carrot", "Space Physics"], player): + reachable_coins += 15 + if state.has("Space Physics", player) or not auto_scroll: + reachable_coins += 4 # last few bottom row question mark blocks that are hard to get when auto scrolling. + if (state.has("Space Physics", player) or ( + state.has("Mushroom", player) and state.has_any(["Fire Flower", "Carrot"], player))): + reachable_coins += 3 + if state.has("Space Physics", player): + reachable_coins += 79 + if not auto_scroll: + reachable_coins += 21 + return coins <= reachable_coins + + +def space_zone_secret_course_coins(state, player, coins): + return coins <= 96 or not is_auto_scroll(state, player, "Space Zone Secret Course") + + +def macro_zone_1_normal_exit(state, player): + return has_pipe_down(state, player) or state.has("Macro Zone 1 Midway Bell", player) + + +def macro_zone_1_secret_exit(state, player): + return state.has("Fire Flower", player) and has_pipe_up(state, player) and macro_zone_1_midway_bell(state, player) + + +def macro_zone_1_midway_bell(state, player): + return has_pipe_down(state, player) or state.has("Macro Zone 1 Midway Bell", player) + + +def macro_zone_1_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 1") + reachable_coins = 0 + if has_pipe_down(state, player): + reachable_coins += 69 + if auto_scroll: + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + else: + reachable_coins += 9 + if state.has("Fire Flower", player): + reachable_coins += 19 + elif state.has("Macro Zone 1 Midway Bell", player): + if auto_scroll: + reachable_coins += 16 + if state.has_any(["Mushroom", "Fire Flower"], player): + reachable_coins += 5 + else: + reachable_coins += 67 + return coins <= reachable_coins + + +def macro_zone_secret_course_coins(state, player, coins): + return state.has_any(["Mushroom", "Fire Flower"], player) + + +def macro_zone_2_normal_exit(state, player): + return (has_pipe_down(state, player) or state.has("Macro Zone 2 Midway Bell", player)) and state.has( + "Water Physics", player) and has_pipe_up(state, player) and not is_auto_scroll(state, player, "Macro Zone 2") + + +def macro_zone_2_midway_bell(state, player): + return ((has_pipe_down(state, player) and state.has("Water Physics", player)) + or state.has("Macro Zone 2 Midway Bell", player)) + + +def macro_zone_2_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 2") + if coins <= 27: + return True + if has_pipe_up(state, player) and state.has("Water Physics", player) and not auto_scroll: + if has_pipe_down(state, player): + return True + if state.has("Macro Zone 2 Midway Bell", player): + # Cannot return to the first section from the bell + return coins <= 42 + return False + + +def macro_zone_3_normal_exit(state, player): + return ((has_pipe_down(state, player) and has_pipe_up(state, player)) + or state.has("Macro Zone 3 Midway Bell", player)) + + +def macro_zone_3_midway_bell(state, player): + return macro_zone_3_normal_exit(state, player) + + +def macro_zone_3_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 3") + reachable_coins = 7 + if not auto_scroll: + reachable_coins += 17 + if has_pipe_up(state, player) and has_pipe_down(state, player): + if auto_scroll: + reachable_coins += 56 + else: + return True + elif has_pipe_up(state, player): + if auto_scroll: + reachable_coins += 12 + else: + reachable_coins += 36 + elif has_pipe_down(state, player): + reachable_coins += 18 + if state.has("Macro Zone 3 - Midway Bell", player): + reachable_coins = max(reachable_coins, 30) + return coins <= reachable_coins + + +def macro_zone_4_boss(state, player): + return has_pipe_right(state, player) + + +def macro_zone_4_coins(state, player, coins): + auto_scroll = is_auto_scroll(state, player, "Macro Zone 4") + reachable_coins = 61 + if auto_scroll: + reachable_coins -= 8 + if state.has("Carrot", player): + reachable_coins += 6 + return coins <= reachable_coins + + +def marios_castle_wario(state, player): + return ((has_pipe_right(state, player) and has_pipe_left(state, player)) + or state.has("Mario's Castle Midway Bell", player)) + + +def marios_castle_midway_bell(state, player): + return ((has_pipe_right(state, player) and has_pipe_left(state, player)) + or state.has("Mario's Castle Midway Bell", player)) diff --git a/worlds/marioland2/options.py b/worlds/marioland2/options.py new file mode 100644 index 000000000000..ace8444b3fb6 --- /dev/null +++ b/worlds/marioland2/options.py @@ -0,0 +1,198 @@ +from Options import Toggle, Choice, NamedRange, Range, PerGameCommonOptions, ItemsAccessibility +from dataclasses import dataclass + + +class ShuffleGoldenCoins(Choice): + """ + Vanilla: Golden Coins are received when defeating bosses. + Shuffle: Shuffle the Golden Coins into the item pool and make bosses location checks. + Mario Coin Fragment Hunt: You start with all Golden Coins except the Mario Coin, which has been fragmented into many pieces. + You will see a Golden Coin being received when defeating bosses regardless of whether you are actually getting a coin. + """ + display_name = "Shuffle Golden Coins" + default = 0 + option_vanilla = 0 + option_shuffle = 1 + option_mario_coin_fragment_hunt = 2 + + +class GoldenCoinsRequired(Range): + """ + Number of Golden Coins required to enter Mario's Castle. Ignored on Mario Coin Fragment Hunt. + """ + display_name = "Golden Coins Required" + range_start = 0 + range_end = 6 + default = 6 + + +class MarioCoinFragmentPercentage(Range): + """ + Percentage of filler items to be replaced with Mario Coin Fragments. Note that the Coinsanity and Coinsanity + Checks options will greatly impact the number of replaceable filler items. + """ + display_name = "Mario Coin Fragment Percentage" + range_start = 1 + range_end = 50 + default = 20 + + +class MarioCoinFragmentsRequiredPercentage(Range): + """ + Percentage of the Mario Coins in the item pool that are required to put the Mario Coin together. + """ + display_name = "Mario Coin Fragments Required Percentage" + range_start = 1 + range_end = 100 + default = 75 + + +class ShuffleMidwayBells(Toggle): + """ + Shuffle Midway Bells into the item pool. You can always start at the beginning of a level after obtaining the + Midway Bell by holding SELECT while entering the level (until you load into the level). + The Midway Bells in levels will trigger location checks whether this option is on or not, but they will only + set the checkpoint if this is off, otherwise you must obtain the Midway Bell item from the item pool. + """ + display_name = "Shuffle Midway Bells" + + +class MariosCastleMidwayBell(Toggle): + """ + Adds a Midway Bell to the final stage, just before the Wario fight. + """ + display_name = "Mario's Castle Midway Bell" + + +class Coinsanity(Toggle): + """ + Shuffles the singular coins found freestanding and in question mark blocks into the item pool, and adds location + checks made by obtaining a sufficient number of coins in particular levels within a single playthrough. + """ + display_name = "Coinsanity" + + +class CoinsanityChecks(Range): + """ + Number of Coinsanity checks. + A higher number means more checks, and smaller coin amounts per coin item in the item pool. + If Accessibility is set to Full, auto-scroll levels may have a lower maximum count, which may lead to this + value being limited. + """ + display_name = "Coinsanity Checks" + range_start = 31 + range_end = 2599 + default = 150 + + +class DifficultyMode(Choice): + """ + Play in normal or easy mode. You can also start in Normal Mode with an "upgrade" to Easy Mode in the item pool, + or start in Easy Mode with a Normal Mode "trap" in the item pool. + """ + display_name = "Difficulty Mode" + option_normal = 0 + option_easy = 1 + option_normal_to_easy = 2 + option_easy_to_normal = 3 + default = 0 + + +class ShufflePipeTraversal(Choice): + """ + Single: Shuffle a Pipe Traversal item into the item pool, which is required to enter any pipes. + Split: Shuffle 4 Pipe Traversal items, one required for entering pipes from each direction. + Note that being unable to enter pipes is very limiting and affects nearly half of all levels. + """ + display_name = "Shuffle Pipe Traversal" + option_off = 0 + option_single = 1 + option_split = 2 + default = 0 + + +class RandomizeEnemies(Toggle): + """ + Randomize enemies throughout levels. + """ + display_name = "Randomize Enemies" + + +class RandomizePlatforms(Toggle): + """ + Randomize platforms throughout levels. + """ + display_name = "Randomize Platforms" + + +class AutoScrollChances(NamedRange): + """ + Chance per eligible level to be made into an auto scroll level. Can also set to Vanilla to leave them unchanged. + """ + display_name = "Auto Scroll Chance" + range_start = 0 + range_end = 100 + special_range_names = {"vanilla": -1, "none": 0, "all": 100} + default = -1 + + +class AutoScrollMode(Choice): + """ + Always: Any auto scroll levels will always auto-scroll. + Global Trap Item: Auto scroll levels will only auto-scroll after obtaining the Auto Scroll trap item. + Level Trap Items: As with Trap Item, but there is a separate trap item for each auto scroll level. + Global Cancel Item: Auto Scroll levels will stop auto-scrolling after obtaining the Auto Scroll Cancel item. + Level Cancel Items: As with Cancel Item, but there is a separate cancel item for each auto scroll level. + Chaos: Each level will randomly always auto scroll, have an Auto Scroll Trap, or have an Auto Scroll Cancel item. + The effects of Trap and Cancel items are permanent! If Accessibility is not set to Full, + Traps may cause locations to become permanently unreachable. + With individual level items, the number of auto scroll levels may be limited by the available space in the item + pool. + """ + display_name = "Auto Scroll Mode" + option_always = 0 + option_global_trap_item = 1 + option_level_trap_items = 2 + option_global_cancel_item = 3 + option_level_cancel_items = 4 + option_chaos = 5 + default = 0 + + +class RandomizeMusic(Toggle): + """ + Randomize the music that plays in levels and overworld areas. + """ + display_name = "Randomize Music" + + +class EnergyLink(Toggle): + """ + All extra lives beyond 1 are transferred into the server's shared EnergyLink storage. If you drop to 0, + 1 will be replenished if there is sufficient energy stored. + """ + display_name = "Energy Link" + default = 1 + + + + +@dataclass +class SML2Options(PerGameCommonOptions): + accessibility: ItemsAccessibility + shuffle_golden_coins: ShuffleGoldenCoins + required_golden_coins: GoldenCoinsRequired + mario_coin_fragment_percentage: MarioCoinFragmentPercentage + mario_coin_fragments_required_percentage: MarioCoinFragmentsRequiredPercentage + coinsanity: Coinsanity + coinsanity_checks: CoinsanityChecks + shuffle_midway_bells: ShuffleMidwayBells + marios_castle_midway_bell: MariosCastleMidwayBell + shuffle_pipe_traversal: ShufflePipeTraversal + auto_scroll_mode: AutoScrollMode + auto_scroll_chances: AutoScrollChances + difficulty_mode: DifficultyMode + randomize_enemies: RandomizeEnemies + randomize_platforms: RandomizePlatforms + randomize_music: RandomizeMusic + energy_link: EnergyLink diff --git a/worlds/marioland2/rom.py b/worlds/marioland2/rom.py new file mode 100644 index 000000000000..2a19a9cb8cad --- /dev/null +++ b/worlds/marioland2/rom.py @@ -0,0 +1,146 @@ +import hashlib +import os +import pkgutil + +import Utils + +from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes +from settings import get_settings + +from .rom_addresses import rom_addresses +from .sprites import sprite_name_to_id + + +def randomize_music(patch, random): + # overworld + overworld_music_tracks = [0x05, 0x06, 0x0D, 0x0E, 0x10, 0x12, 0x1B, 0x1C, 0x1E] + random.shuffle(overworld_music_tracks) + for i, track in zip([0x3004F, 0x3EA9B, 0x3D186, 0x3D52B, 0x3D401, 0x3D297, 0x3D840, 0x3D694, 0x3D758], + overworld_music_tracks): + patch.write_bytes(i, track) + # levels + for i in range(0x5619, 0x5899, 0x14): + patch.write_bytes(i, random.choice([0x01, 0x0B, 0x11, 0x13, 0x14, 0x17, 0x1D, 0x1F, 0x28])) + + +def generate_output(self, output_directory: str): + + patch = SuperMarioLand2ProcedurePatch(player=self.player, player_name=self.player_name) + + patch.write_file("basepatch.bsdiff4", pkgutil.get_data(__name__, "basepatch.bsdiff4")) + random = self.random + + if self.options.marios_castle_midway_bell: + # Remove Question Mark Block + patch.write_bytes(0x4F012, 0x5D) + # Fix level pointer to read midway bell flag + patch.write_bytes(0x3E569, 0x18) + patch.write_bytes(0x3E56A, 0x18) + # Position and screen coordinates + patch.write_bytes(0x383B, [0xD4, 0x01, 0x4D, 0x0A, 0xC0, 0x01, 0x50, 0x0A]) + + if self.options.coinsanity: + # Add platform to return to start of Pumpkin Zone Secret Course 1 + patch.write_bytes(0x258B6, 0x3B) + patch.write_bytes(0x258F8, 0x7a) + patch.write_bytes(0x2594D, 0x67) + patch.write_bytes(0x259A8, 0x68) + patch.write_bytes(0x259A9, 0x60) + + i = 0xe077 + for level, sprites in self.sprite_data.items(): + for sprite_data in sprites: + sprite_id = sprite_name_to_id[sprite_data["sprite"]] + data = [((sprite_id & 0b01000000) >> 2) | ((sprite_id & 0b00111000) << 2) | sprite_data["screen"], + ((sprite_id & 0b00000111) << 5) | sprite_data["x"], + sprite_data["misc"] | sprite_data["y"]] + patch.write_bytes(i, data) + i += 3 + patch.write_bytes(i, 255) + i += 1 + + if self.options.randomize_music: + randomize_music(patch, random) + + if self.options.shuffle_golden_coins: + patch.write_bytes(rom_addresses["Coin_Shuffle"], 0x40) + if self.options.shuffle_midway_bells: + patch.write_bytes(rom_addresses["Disable_Midway_Bell"], 0xC9) + + if self.options.coinsanity: + for section in ("A", "B"): + for i in range(0, 30): + patch.write_bytes(rom_addresses[f"Coinsanity_{section}"] + i, 0x00) + + star_count = max(len([loc for loc in self.multiworld.get_filled_locations() if loc.item.player == self.player + and loc.item.name == "Super Star Duration Increase"]), 1) + patch.write_bytes(rom_addresses["Star_Count"], star_count // 256) + patch.write_bytes(rom_addresses["Star_Count"] + 1, star_count - (star_count // 256)) + if self.options.shuffle_golden_coins == "mario_coin_fragment_hunt": + patch.write_bytes(rom_addresses["Coins_Required"], self.coin_fragments_required // 256) + patch.write_bytes(rom_addresses["Coins_Required"] + 1, self.coin_fragments_required % 256) + patch.write_bytes(rom_addresses["Required_Golden_Coins"], 6) + else: + patch.write_bytes(rom_addresses["Coins_Required"] + 1, self.options.required_golden_coins.value) + patch.write_bytes(rom_addresses["Required_Golden_Coins"], self.options.required_golden_coins.value) + patch.write_bytes(rom_addresses["Midway_Bells"], self.options.shuffle_midway_bells.value) + patch.write_bytes(rom_addresses["Energy_Link"], self.options.energy_link.value) + patch.write_bytes(rom_addresses["Difficulty_Mode"], self.options.difficulty_mode.value) + patch.write_bytes(rom_addresses["Coin_Mode"], self.options.shuffle_golden_coins.value) + + for level, i in enumerate(self.auto_scroll_levels): + # We set 0 if no auto scroll or auto scroll trap, so it defaults to no auto scroll. 1 if always or cancel items. + patch.write_bytes(rom_addresses["Auto_Scroll_Levels"] + level, max(0, i - 1)) + patch.write_bytes(rom_addresses["Auto_Scroll_Levels_B"] + level, i) + + if self.options.energy_link: + # start with 1 life if Energy Link is on so that you don't deposit lives at the start of the game. + patch.write_bytes(rom_addresses["Starting_Lives"], 1) + + rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{self.player}_{self.multiworld.seed:11}\0', + 'utf8')[:21] + rom_name.extend([0] * (21 - len(rom_name))) + patch.write_bytes(0x77777, rom_name) + patch.write_file("tokens.bin", patch.get_token_binary()) + patch.write(os.path.join(output_directory, + f"{self.multiworld.get_out_file_name_base(self.player)}{patch.patch_file_ending}")) + + +class SuperMarioLand2ProcedurePatch(APProcedurePatch, APTokenMixin): + hash = "a8413347d5df8c9d14f97f0330d67bce" + patch_file_ending = ".apsml2" + game = "Super Mario Land 2" + result_file_ending = ".gb" + procedure = [ + ("apply_bsdiff4", ["basepatch.bsdiff4"]), + ("apply_tokens", ["tokens.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + return get_base_rom_bytes() + + def write_bytes(self, offset, value): + if isinstance(value, int): + value = [value] + self.write_token(APTokenTypes.WRITE, offset, bytes(value)) + + +def get_base_rom_bytes(): + file_name = get_base_rom_path() + with open(file_name, "rb") as file: + base_rom_bytes = bytes(file.read()) + + basemd5 = hashlib.md5() + basemd5.update(base_rom_bytes) + if SuperMarioLand2ProcedurePatch.hash != basemd5.hexdigest(): + raise Exception("Supplied Base Rom does not match known MD5 for Super Mario Land 1.0. " + "Get the correct game and version, then dump it") + return base_rom_bytes + + +def get_base_rom_path(): + file_name = get_settings()["sml2_options"]["rom_file"] + if not os.path.exists(file_name): + file_name = Utils.user_path(file_name) + return file_name \ No newline at end of file diff --git a/worlds/marioland2/rom_addresses.py b/worlds/marioland2/rom_addresses.py new file mode 100644 index 000000000000..e4b4f69cd71e --- /dev/null +++ b/worlds/marioland2/rom_addresses.py @@ -0,0 +1,39 @@ +rom_addresses = { + "Space_Physics": 0x4e7, + "Pipe_Traversal_A": 0x11a4, + "Pipe_Traversal_SFX_A": 0x11a9, + "Pipe_Traversal_B": 0x11d6, + "Pipe_Traversal_SFX_B": 0x11e7, + "Pipe_Traversal_C": 0x1226, + "Pipe_Traversal_SFX_C": 0x123f, + "Pipe_Traversal_D": 0x1256, + "Pipe_Traversal_SFX_D": 0x125b, + "Enable_Swim": 0x1d17, + "Coinsanity_B": 0x1d86, + "Auto_Scroll_Levels": 0x1f71, + "Starting_Lives": 0x2920, + "Get_Hurt_To_Big_Mario": 0x31c7, + "Get_Mushroom_A": 0x345c, + "Get_Fire_Flower_A": 0x346d, + "Get_Carrot_A": 0x347e, + "Invincibility_Star_A": 0x349e, + "Invincibility_Star_B": 0x34a3, + "Enable_Bubble": 0x34e5, + "Coinsanity_A": 0x591f, + "Coin_Shuffle": 0x304ce, + "Required_Golden_Coins": 0x306e9, + "Disable_Midway_Bell": 0x3ef1e, + "Get_Carrot_C": 0x6092f, + "Get_Mushroom_C": 0x60930, + "Get_Fire_Flower_C": 0x60933, + "Get_Mushroom_B": 0x60ddb, + "Get_Carrot_B": 0x60de7, + "Get_Fire_Flower_B": 0x60df3, + "Coins_Required": 0x80139, + "Difficulty_Mode": 0x8013b, + "Star_Count": 0x8013c, + "Midway_Bells": 0x8013e, + "Energy_Link": 0x8013f, + "Coin_Mode": 0x80140, + "Auto_Scroll_Levels_B": 0x80141, +} diff --git a/worlds/marioland2/sprite_randomizer.py b/worlds/marioland2/sprite_randomizer.py new file mode 100644 index 000000000000..8440da2b37f6 --- /dev/null +++ b/worlds/marioland2/sprite_randomizer.py @@ -0,0 +1,131 @@ +# Based on SML2R enemy and platform randomizer +# # https://github.com/slashinfty/sml2r-node/blob/862128c73d336d6cbfbf6290c09f3eff103688e8/src/index.ts#L284 + +def randomize_enemies(sprite_data, random): + for level, level_sprite_data in sprite_data.items(): + shuffle = () + if level in ("Mushroom Zone", "Macro Zone 4"): + shuffle = ("Koopa Troopa", "Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)") + elif level in ("Scenic Course", "Pumpkin Zone Secret Course 1"): + shuffle = ("Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)") + elif level == "Tree Zone 1": + shuffle = ("Money Bag/Bopping Toady", "Ragumo/Aqua Kuribo", "Pencil/Spikey", "Kyotonbo") + elif level == "Tree Zone 2": + shuffle = ("Noko Bombette/Bear", "No 48/Mogyo") + elif level == "Tree Zone 3": + shuffle = ("Battle Beetle", "Be", "Ant") + elif level == "Tree Zone 5": + shuffle = ("Paragoomba (Diagonal)", "Dondon", "Paragoomba (Vertical)") + elif level == "Pumpkin Zone 2": + shuffle = ("Boo/Bomubomu", "Kyororo", "Honebon/F Boy", "Karakara", "Star (Vertical)/Blurp (Horizontal)", + "Star (Horizontal)/Blurp (Vertical)") + elif level == "Pumpkin Zone 3": + shuffle = ("Boo/Bomubomu", "Unibo/Terekuribo") + elif level == "Mario Zone 1": + shuffle = ("Koopa Troopa", "Neiji/Buichi", "Tatenoko") + elif level == "Mario Zone 2": + shuffle = ("Paragoomba (Diagonal)", "Goomba", "Paragoomba (Vertical)", "Noko Bombette/Bear", + "Boo/Bomubomu") + elif level == "Turtle Zone 1": + shuffle = ("Horizontal Blurp", "Shark", "Cheep Cheep (Vertical)", "Paragoomba (Diagonal)", "Goomba", + "Spiny Cheep Cheep", "Paragoomba (Vertical)", + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)") + elif level == "Hippo Zone": + shuffle = ("Horizontal Blurp", "Dondon", "Unibo/Terekuribo", "Toriuo") + elif level == "Space Zone 2": + shuffle = ("Tosenbo/Pikku", "Star (Vertical)/Blurp (Horizontal)", "Star (Horizontal)/Blurp (Vertical)") + elif level == "Macro Zone 1": + shuffle = ("Kyotonbo", "Goronto", "Dokanto", "Chikunto") + elif level == "Macro Zone 2": + shuffle = ("Cheep Cheep (Vertical)", "Battle Beetle", "Be", + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "Ant") + elif level == "Macro Zone 3": + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Goomba", "Be", "Paragoomba (Vertical)", + "Honebon/F Boy") + elif level == "Pumpkin Zone Secret Course 2": + shuffle = ("Koopa Troopa", "Goomba") + for sprite in level_sprite_data: + if level == "Pumpkin Zone 1": + if sprite["sprite"] == "Falling Spike": + shuffle = ("Boo/Bomubomu", "Falling Spike", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] == "Falling Spike on Chain": + shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Kurokyura/Jack-in-the-Box", + "Masked Ghoul/Bullet Bill") + else: + shuffle = ("Boo/Bomubomu", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill") + elif level == "Pumpkin Zone 4": + if sprite["sprite"] == "Falling Spike on Chain": + shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Masked Ghoul/Bullet Bill", "Rerere/Poro", + "Tosenbo/Pikku") + else: + shuffle = ("Boo/Bomubomu", "Masked Ghoul/Bullet Bill", "Rerere/Poro", "Tosenbo/Pikku") + elif level == "Mario Zone 3": + if sprite["sprite"] == "Claw Grabber": + shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Claw Grabber", + "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] in ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto"): + shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Masked Ghoul/Bullet Bill") + else: + shuffle = () + elif level == "Mario Zone 4": + if sprite["sprite"] == "Spinning Spike/Tamara": + shuffle = ("Goomba", "Spinning Spike/Tamara", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + elif sprite["sprite"] == "Moving Saw (Floor)": + shuffle = ("Goomba", "Moving Saw (Floor)", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + else: + shuffle = ("Goomba", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill") + elif level == "Turtle Zone 3": + if sprite["sprite"] == "Pencil/Spikey": + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo", "Pencil/Spikey", + "Paragoomba (Vertical)", "Honebon/F Boy") + else: + shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo", + "Paragoomba (Vertical)", "Honebon/F Boy") + elif level == "Space Zone 1": + if sprite["sprite"] == "Boo/Bomubomu": + shuffle = ("Boo/Bomubomu", "No 48/Mogyo") + else: + shuffle = ("Boo/Bomubomu", "No 48/Mogyo", "Rerere/Poro") + elif level == "Mario's Castle": + if sprite["sprite"] in ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)"): + shuffle = ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)") + else: + shuffle = ("Spike Ball (Large)", "Spike Ball (Small)") + elif level == "Tree Zone 4": + # Deviation from SML2R: No Buichis placed into non-Buichi locations, as they can place under the + # underground question mark blocks. Potentially could make a list of which ones are allowed to become + # Buichis? + if sprite["sprite"] in ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", + "Spinning Spike (Horizontal)/Unera"): + shuffle = ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera") + elif sprite["sprite"] == "Neiji/Buichi": + shuffle = ("Runaway Heart Block/Bibi", "Neiji/Buichi", "Piranha Plant (Downward)/Grubby", + "Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera") + else: + shuffle = () + if sprite["sprite"] in ("Piranha Plant", "Fire Piranha Plant"): + if level not in ("Pumpkin Zone 2", "Pumpkin Zone 4", "Macro Zone 3"): + shuffle = ("Piranha Plant", "Fire Piranha Plant") + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + elif level == "Mario's Castle" and sprite["sprite"] == "Karamenbo" and not random.randint(0, 9): + sprite["y"] += 1 + + +def randomize_platforms(sprite_data, random): + shuffle = ("Moving Platform (Small, Vertical)", "Moving Platform (Large, Vertical)", + "Moving Platform (Small, Horizontal)", "Moving Platform (Large, Horizontal)", + "Moving Platform (Large, Diagonal)", "Falling Platform") + for sprite in sprite_data["Tree Zone 3"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + shuffle = ("Cloud Platform (Horizontal)", "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)") + for sprite in sprite_data["Tree Zone 5"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) + shuffle = ("Falling Bone Platform", "Rising Bone Platform", "Skull Platform") + for sprite in sprite_data["Mario's Castle"]: + if sprite["sprite"] in shuffle: + sprite["sprite"] = random.choice(shuffle) diff --git a/worlds/marioland2/sprites.py b/worlds/marioland2/sprites.py new file mode 100644 index 000000000000..33a14731295e --- /dev/null +++ b/worlds/marioland2/sprites.py @@ -0,0 +1,1016 @@ +sprite_name_to_id = { + "Ant": 93, "Ragumo/Aqua Kuribo": 32, "Battle Beetle": 51, "Be": 52, "Noko Bombette/Bear": 68, + "Runaway Heart Block/Bibi": 53, "Star (Vertical)/Blurp (Horizontal)": 94, + "Star (Horizontal)/Blurp (Vertical)": 95, "Boo/Bomubomu": 77, + "Money Bag/Bopping Toady": 31, "Neiji/Buichi": 64, "Masked Ghoul/Bullet Bill": 83, + "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)": 61, "Cheep Cheep (Vertical)": 7, + "Chikunto": 39, "Dokanto": 37, "Dondon": 57, "Honebon/F Boy": 85, "Fire Pakkun Zo (Large)": 104, + "Fire Pakkun Zo (Left)": 105, "Fire Pakkun Zo (Right)": 106, "Fire Piranha Plant": 13, "Floating Face": 100, + "Genkottsu (1.5 Tiles)": 99, "Genkottsu (2 Tiles)": 98, "Goomba": 9, "Goronto": 35, + "Piranha Plant (Downward)/Grubby": 66, "Kurokyura/Jack-in-the-Box": 81, + "Karakara": 86, "Karamenbo": 102, "Kiddokatto": 72, "Koopa Troopa": 1, "Kyororo": 84, "Kyotonbo": 34, + "No 48/Mogyo": 88, "Paragoomba (Diagonal)": 8, "Paragoomba (Vertical)": 58, "Tosenbo/Pikku": 92, + "Piranha Plant": 12, "Rerere/Poro": 90, "Shark": 6, + "Spinning Platform (Horizontal)/Skeleton Bee": 62, "Pencil/Spikey": 33, + "Spiny Cheep Cheep": 11, "Spinning Spike/Tamara": 67, "Tatenoko": 75, "Unibo/Terekuribo": 87, + "Toriuo": 91, "Spinning Spike (Horizontal)/Unera": 65, "Claw Grabber": 73, + "Diagonal Ball on Chain": 71, "Falling Spike": 78, "Falling Spike on Chain": 79, "Spinning Spike (Vertical)": 80, + "Spike Ball (Large)": 110, "Spike Ball (Small)": 111, "Moving Saw (Ceiling)": 74, "Moving Saw (Floor)": 76, + "Moving Platform (Small, Vertical)": 40, "Moving Platform (Large, Vertical)": 41, + "Moving Platform (Small, Horizontal)": 42, "Moving Platform (Large, Horizontal)": 43, + "Moving Platform (Large, Diagonal)": 45, "Falling Platform": 46, "Rising Platform": 47, + "Rotating Platform (Small)": 48, "Owl Platform (Vertical)": 55, "Cloud Platform (Horizontal)": 56, + "Spinning Platform (Vertical)": 63, "Falling Bone Platform": 96, "Rising Bone Platform": 97, "Skull Platform": 103, + "Propeller Platform": 107, "Heart": 15, "Mushroom": 27, "Flower": 28, "Carrot": 29, "Star": 30, + "Mushroom Block": 17, "Flower Block": 18, "Carrot Block": 19, "Star Block": 20, "Heart Block": 21, + "Money Bag Block": 25, "Bubble": 24, "Midway Bell": 23, "Bonus Bell": 22, "Horizontal Blurp": 5, + "Big Diagonal Moving Platform": 44} + +sprite_id_to_name = {a: b for b, a in sprite_name_to_id.items()} + +level_sprites = { + "Mushroom Zone": [ + {"screen": 1, "sprite": "Goomba", "x": 27, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 9, "y": 24, "misc": 32}, + {"screen": 2, "sprite": "Mushroom Block", "x": 21, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 7, "y": 26, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 18, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 19, "y": 22, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 22, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Heart Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Goomba", "x": 5, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Midway Bell", "x": 29, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Goomba", "x": 1, "y": 30, "misc": 32}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 13, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 20, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Flower Block", "x": 25, "y": 23, "misc": 32}, + {"screen": 12, "sprite": "Heart", "x": 15, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Goomba", "x": 3, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Piranha Plant", "x": 16, "y": 30, "misc": 32}, + {"screen": 14, "sprite": "Goomba", "x": 11, "y": 22, "misc": 32}, + {"screen": 14, "sprite": "Koopa Troopa", "x": 20, "y": 22, "misc": 160}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 13, "misc": 32}], + "Tree Zone 1": [ + {"screen": 1, "sprite": "Star Block", "x": 17, "y": 21, "misc": 32}, + {"screen": 2, "sprite": "Ragumo/Aqua Kuribo", "x": 5, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Heart", "x": 19, "y": 30, "misc": 0}, + {"screen": 2, "sprite": "Ragumo/Aqua Kuribo", "x": 23, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Money Bag/Bopping Toady", "x": 1, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Money Bag/Bopping Toady", "x": 20, "y": 24, "misc": 160}, + {"screen": 4, "sprite": "Money Bag/Bopping Toady", "x": 9, "y": 24, "misc": 32}, + {"screen": 4, "sprite": "Heart", "x": 13, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Money Bag/Bopping Toady", "x": 31, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Pencil/Spikey", "x": 3, "y": 24, "misc": 160}, + {"screen": 5, "sprite": "Kyotonbo", "x": 21, "y": 22, "misc": 160}, + {"screen": 6, "sprite": "Money Bag/Bopping Toady", "x": 11, "y": 24, "misc": 160}, + {"screen": 6, "sprite": "Money Bag/Bopping Toady", "x": 23, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Pencil/Spikey", "x": 28, "y": 24, "misc": 160}, + {"screen": 7, "sprite": "Heart Block", "x": 29, "y": 5, "misc": 32}, + {"screen": 8, "sprite": "Midway Bell", "x": 13, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Money Bag/Bopping Toady", "x": 29, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Ragumo/Aqua Kuribo", "x": 10, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Kyotonbo", "x": 15, "y": 10, "misc": 160}, + {"screen": 9, "sprite": "Mushroom Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Kyotonbo", "x": 3, "y": 10, "misc": 160}, + {"screen": 10, "sprite": "Pencil/Spikey", "x": 19, "y": 24, "misc": 160}, + {"screen": 10, "sprite": "Star Block", "x": 25, "y": 21, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 7, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 27, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 31, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Money Bag/Bopping Toady", "x": 15, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Ragumo/Aqua Kuribo", "x": 3, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Money Bag/Bopping Toady", "x": 23, "y": 24, "misc": 32}, + {"screen": 14, "sprite": "Money Bag/Bopping Toady", "x": 15, "y": 30, "misc": 160}, + {"screen": 14, "sprite": "Kyotonbo", "x": 31, "y": 24, "misc": 160}, + {"screen": 15, "sprite": "Bonus Bell", "x": 19, "y": 13, "misc": 32}, + {"screen": 15, "sprite": "Heart Block", "x": 25, "y": 15, "misc": 32}], + "Tree Zone 2": [ + {"screen": 2, "sprite": "No 48/Mogyo", "x": 9, "y": 30, "misc": 0}, + {"screen": 2, "sprite": "Mushroom Block", "x": 23, "y": 19, "misc": 0}, + {"screen": 2, "sprite": "No 48/Mogyo", "x": 27, "y": 30, "misc": 0}, + {"screen": 3, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "No 48/Mogyo", "x": 15, "y": 28, "misc": 160}, + {"screen": 3, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 0}, + {"screen": 4, "sprite": "No 48/Mogyo", "x": 3, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "No 48/Mogyo", "x": 17, "y": 28, "misc": 160}, + {"screen": 5, "sprite": "Noko Bombette/Bear", "x": 1, "y": 30, "misc": 128}, + {"screen": 5, "sprite": "No 48/Mogyo", "x": 7, "y": 28, "misc": 32}, + {"screen": 6, "sprite": "Falling Platform", "x": 22, "y": 22, "misc": 0}, + {"screen": 7, "sprite": "Midway Bell", "x": 3, "y": 14, "misc": 0}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 15, "y": 30, "misc": 0}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 17, "y": 8, "misc": 32}, + {"screen": 7, "sprite": "Money Bag Block", "x": 19, "y": 19, "misc": 32}, + {"screen": 7, "sprite": "No 48/Mogyo", "x": 19, "y": 0, "misc": 32}, + {"screen": 8, "sprite": "Mushroom Block", "x": 5, "y": 13, "misc": 0}, + {"screen": 8, "sprite": "Noko Bombette/Bear", "x": 11, "y": 24, "misc": 0}, + {"screen": 8, "sprite": "Carrot Block", "x": 17, "y": 21, "misc": 64}, + {"screen": 9, "sprite": "Noko Bombette/Bear", "x": 3, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Noko Bombette/Bear", "x": 23, "y": 30, "misc": 64}, + {"screen": 10, "sprite": "Noko Bombette/Bear", "x": 11, "y": 30, "misc": 64}, + {"screen": 10, "sprite": "Noko Bombette/Bear", "x": 31, "y": 30, "misc": 64}, + {"screen": 11, "sprite": "Money Bag Block", "x": 5, "y": 19, "misc": 0}, + {"screen": 11, "sprite": "Mushroom Block", "x": 13, "y": 5, "misc": 0}, + {"screen": 11, "sprite": "Heart", "x": 19, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 3, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 5, "y": 16, "misc": 0}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 13, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Heart", "x": 27, "y": 8, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 15, "misc": 32}], + "Tree Zone 4": [ + {"screen": 1, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 11, "y": 26, "misc": 160}, + {"screen": 1, "sprite": "Runaway Heart Block/Bibi", "x": 20, "y": 24, "misc": 0}, + {"screen": 1, "sprite": "Flower Block", "x": 25, "y": 21, "misc": 32}, + {"screen": 2, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 16, "y": 24, "misc": 128}, + {"screen": 3, "sprite": "Neiji/Buichi", "x": 18, "y": 18, "misc": 0}, + {"screen": 3, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 28, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Neiji/Buichi", "x": 4, "y": 18, "misc": 0}, + {"screen": 4, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 12, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Neiji/Buichi", "x": 22, "y": 18, "misc": 0}, + {"screen": 4, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 28, "y": 30, "misc": 0}, + {"screen": 5, "sprite": "Neiji/Buichi", "x": 8, "y": 18, "misc": 128}, + {"screen": 6, "sprite": "Runaway Heart Block/Bibi", "x": 12, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 13, "y": 12, "misc": 160}, + {"screen": 6, "sprite": "Mushroom Block", "x": 19, "y": 17, "misc": 32}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 23, "y": 28, "misc": 128}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 25, "y": 18, "misc": 160}, + {"screen": 6, "sprite": "Piranha Plant (Downward)/Grubby", "x": 31, "y": 24, "misc": 160}, + {"screen": 7, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 2, "y": 24, "misc": 0}, + {"screen": 7, "sprite": "Runaway Heart Block/Bibi", "x": 28, "y": 24, "misc": 128}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 1, "y": 12, "misc": 32}, + {"screen": 8, "sprite": "Piranha Plant (Downward)/Grubby", "x": 5, "y": 28, "misc": 0}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 5, "y": 18, "misc": 32}, + {"screen": 8, "sprite": "Runaway Heart Block/Bibi", "x": 14, "y": 24, "misc": 0}, + {"screen": 8, "sprite": "Star Block", "x": 17, "y": 11, "misc": 32}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 19, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 17, "y": 19, "misc": 0}, + {"screen": 9, "sprite": "Piranha Plant (Downward)/Grubby", "x": 21, "y": 20, "misc": 0}, + {"screen": 9, "sprite": "Spinning Spike/Tamara", "x": 23, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Midway Bell", "x": 0, "y": 18, "misc": 0}, + {"screen": 10, "sprite": "Spinning Spike/Tamara", "x": 5, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Piranha Plant (Downward)/Grubby", "x": 11, "y": 20, "misc": 0}, + {"screen": 10, "sprite": "Spinning Spike/Tamara", "x": 17, "y": 27, "misc": 0}, + {"screen": 10, "sprite": "Mushroom Block", "x": 23, "y": 19, "misc": 0}, + {"screen": 12, "sprite": "Runaway Heart Block/Bibi", "x": 2, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 28, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Tree Zone 3": [ + {"screen": 0, "sprite": "Moving Platform (Large, Vertical)", "x": 19, "y": 10, "misc": 32}, + {"screen": 0, "sprite": "Carrot Block", "x": 25, "y": 25, "misc": 0}, + {"screen": 0, "sprite": "Ant", "x": 28, "y": 18, "misc": 32}, + {"screen": 1, "sprite": "Ant", "x": 0, "y": 22, "misc": 64}, + {"screen": 1, "sprite": "Battle Beetle", "x": 10, "y": 24, "misc": 64}, + {"screen": 1, "sprite": "Moving Platform (Large, Diagonal)", "x": 11, "y": 22, "misc": 32}, + {"screen": 1, "sprite": "Fire Piranha Plant", "x": 18, "y": 20, "misc": 128}, + {"screen": 1, "sprite": "Cheep Cheep (Vertical)", "x": 18, "y": 21, "misc": 0}, + {"screen": 1, "sprite": "Mushroom Block", "x": 21, "y": 15, "misc": 64}, + {"screen": 1, "sprite": "Heart Block", "x": 21, "y": 7, "misc": 64}, + {"screen": 1, "sprite": "Be", "x": 30, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Piranha Plant", "x": 4, "y": 24, "misc": 192}, + {"screen": 2, "sprite": "Be", "x": 14, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Fire Piranha Plant", "x": 20, "y": 24, "misc": 192}, + {"screen": 2, "sprite": "Falling Platform", "x": 24, "y": 27, "misc": 0}, + {"screen": 2, "sprite": "Heart Block", "x": 25, "y": 19, "misc": 0}, + {"screen": 3, "sprite": "Falling Platform", "x": 0, "y": 25, "misc": 0}, + {"screen": 3, "sprite": "Falling Platform", "x": 0, "y": 31, "misc": 32}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 4, "y": 15, "misc": 64}, + {"screen": 3, "sprite": "Falling Platform", "x": 8, "y": 31, "misc": 32}, + {"screen": 3, "sprite": "Ant", "x": 20, "y": 30, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 32}, + {"screen": 3, "sprite": "Heart Block", "x": 29, "y": 5, "misc": 32}, + {"screen": 4, "sprite": "Fire Piranha Plant", "x": 4, "y": 22, "misc": 192}, + {"screen": 4, "sprite": "Moving Platform (Small, Horizontal)", "x": 8, "y": 19, "misc": 0}, + {"screen": 4, "sprite": "Ant", "x": 12, "y": 20, "misc": 64}, + {"screen": 4, "sprite": "Moving Platform (Small, Vertical)", "x": 14, "y": 2, "misc": 64}, + {"screen": 4, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 0}, + {"screen": 4, "sprite": "Money Bag Block", "x": 27, "y": 15, "misc": 32}, + {"screen": 4, "sprite": "Heart Block", "x": 27, "y": 17, "misc": 64}], + "Tree Zone 5": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 15, "y": 17, "misc": 64}, + {"screen": 1, "sprite": "Rotating Platform (Small)", "x": 15, "y": 19, "misc": 64}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 2, "y": 26, "misc": 192}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 16, "y": 26, "misc": 192}, + {"screen": 2, "sprite": "Heart Block", "x": 17, "y": 13, "misc": 64}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 26, "y": 26, "misc": 192}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 22, "misc": 192}, + {"screen": 3, "sprite": "Owl Platform (Vertical)", "x": 23, "y": 28, "misc": 64}, + {"screen": 4, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 11, "y": 19, "misc": 64}, + {"screen": 5, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 1, "y": 21, "misc": 64}, + {"screen": 5, "sprite": "Cloud Platform (Horizontal)", "x": 18, "y": 20, "misc": 64}, + {"screen": 5, "sprite": "Cloud Platform (Horizontal)", "x": 26, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Cloud Platform (Horizontal)", "x": 2, "y": 20, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 18, "y": 20, "misc": 64}, + {"screen": 6, "sprite": "Heart Block", "x": 23, "y": 21, "misc": 64}, + {"screen": 6, "sprite": "Dondon", "x": 30, "y": 14, "misc": 64}, + {"screen": 7, "sprite": "Carrot Block", "x": 9, "y": 19, "misc": 64}, + {"screen": 7, "sprite": "Rotating Platform (Small)", "x": 9, "y": 21, "misc": 64}, + {"screen": 7, "sprite": "Heart Block", "x": 23, "y": 13, "misc": 64}, + {"screen": 7, "sprite": "Rotating Platform (Small)", "x": 23, "y": 23, "misc": 64}, + {"screen": 8, "sprite": "Mushroom Block", "x": 21, "y": 13, "misc": 64}, + {"screen": 9, "sprite": "Star Block", "x": 5, "y": 7, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 7, "y": 14, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 27, "y": 20, "misc": 64}, + {"screen": 9, "sprite": "Paragoomba (Vertical)", "x": 31, "y": 16, "misc": 64}, + {"screen": 10, "sprite": "Cloud Platform (Horizontal)", "x": 20, "y": 22, "misc": 64}, + {"screen": 10, "sprite": "Paragoomba (Vertical)", "x": 31, "y": 18, "misc": 64}, + {"screen": 11, "sprite": "Cloud Platform (Horizontal)", "x": 8, "y": 22, "misc": 64}, + {"screen": 11, "sprite": "Paragoomba (Vertical)", "x": 16, "y": 25, "misc": 64}], + "Pumpkin Zone 1": [ + {"screen": 1, "sprite": "Falling Spike on Chain", "x": 9, "y": 14, "misc": 160}, + {"screen": 1, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 0}, + {"screen": 1, "sprite": "Masked Ghoul/Bullet Bill", "x": 19, "y": 30, "misc": 0}, + {"screen": 1, "sprite": "Falling Spike on Chain", "x": 27, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 17, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 23, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Falling Spike on Chain", "x": 29, "y": 22, "misc": 32}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 1, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 21, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 5, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Carrot Block", "x": 17, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 21, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Falling Spike", "x": 27, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Boo/Bomubomu", "x": 1, "y": 28, "misc": 0}, + {"screen": 6, "sprite": "Masked Ghoul/Bullet Bill", "x": 2, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 5, "y": 7, "misc": 0}, + {"screen": 6, "sprite": "Boo/Bomubomu", "x": 9, "y": 28, "misc": 128}, + {"screen": 6, "sprite": "Fire Piranha Plant", "x": 16, "y": 2, "misc": 192}, + {"screen": 6, "sprite": "Midway Bell", "x": 24, "y": 22, "misc": 32}, + {"screen": 7, "sprite": "Falling Spike", "x": 1, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 9, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Falling Spike", "x": 27, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 31, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Piranha Plant", "x": 16, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Masked Ghoul/Bullet Bill", "x": 17, "y": 24, "misc": 160}, + {"screen": 8, "sprite": "Fire Piranha Plant", "x": 24, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Masked Ghoul/Bullet Bill", "x": 7, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 11, "y": 10, "misc": 160}, + {"screen": 9, "sprite": "Piranha Plant", "x": 20, "y": 14, "misc": 32}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 23, "y": 30, "misc": 128}, + {"screen": 10, "sprite": "Cheep Cheep (Vertical)", "x": 30, "y": 11, "misc": 160}, + {"screen": 11, "sprite": "Cheep Cheep (Vertical)", "x": 6, "y": 19, "misc": 32}, + {"screen": 11, "sprite": "Kurokyura/Jack-in-the-Box", "x": 11, "y": 30, "misc": 0}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 3, "misc": 32}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 11, "misc": 0}], + "Pumpkin Zone 2": [ + {"screen": 1, "sprite": "Karakara", "x": 7, "y": 30, "misc": 160}, + {"screen": 1, "sprite": "Karakara", "x": 15, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Karakara", "x": 23, "y": 30, "misc": 160}, + {"screen": 2, "sprite": "Piranha Plant", "x": 20, "y": 30, "misc": 160}, + {"screen": 3, "sprite": "Honebon/F Boy", "x": 4, "y": 11, "misc": 160}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 4, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Mushroom Block", "x": 17, "y": 21, "misc": 64}, + {"screen": 4, "sprite": "Kyororo", "x": 29, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Honebon/F Boy", "x": 6, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Kyororo", "x": 13, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Kyororo", "x": 29, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Midway Bell", "x": 1, "y": 16, "misc": 32}, + {"screen": 6, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 21, "y": 30, "misc": 192}, + {"screen": 6, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 28, "y": 25, "misc": 64}, + {"screen": 7, "sprite": "Mushroom", "x": 3, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 9, "y": 13, "misc": 160}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 13, "y": 21, "misc": 160}, + {"screen": 7, "sprite": "Heart", "x": 29, "y": 14, "misc": 32}, + {"screen": 8, "sprite": "Carrot", "x": 7, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Flower", "x": 13, "y": 14, "misc": 32}, + {"screen": 8, "sprite": "Heart", "x": 19, "y": 20, "misc": 32}, + {"screen": 9, "sprite": "Star Block", "x": 1, "y": 13, "misc": 32}, + {"screen": 9, "sprite": "Kyororo", "x": 19, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 20, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Kyororo", "x": 21, "y": 16, "misc": 32}, + {"screen": 10, "sprite": "Kyororo", "x": 5, "y": 14, "misc": 32}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 7, "y": 28, "misc": 32}, + {"screen": 10, "sprite": "Kyororo", "x": 22, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 0, "y": 26, "misc": 192}, + {"screen": 11, "sprite": "Falling Spike", "x": 5, "y": 24, "misc": 64}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 7, "y": 30, "misc": 32}, + {"screen": 11, "sprite": "Kyororo", "x": 10, "y": 16, "misc": 32}, + {"screen": 11, "sprite": "Falling Spike", "x": 15, "y": 24, "misc": 64}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 19, "y": 28, "misc": 192}, + {"screen": 12, "sprite": "Karakara", "x": 9, "y": 30, "misc": 32}, + {"screen": 12, "sprite": "Karakara", "x": 17, "y": 30, "misc": 32}, + {"screen": 12, "sprite": "Karakara", "x": 25, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Karakara", "x": 19, "y": 30, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 32}], + "Pumpkin Zone 3": [ + {"screen": 1, "sprite": "Unibo/Terekuribo", "x": 21, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Unibo/Terekuribo", "x": 21, "y": 20, "misc": 160}, + {"screen": 3, "sprite": "Carrot Block", "x": 9, "y": 7, "misc": 32}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 19, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Boo/Bomubomu", "x": 1, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Boo/Bomubomu", "x": 19, "y": 14, "misc": 160}, + {"screen": 6, "sprite": "Moving Platform (Small, Horizontal)", "x": 0, "y": 8, "misc": 64}, + {"screen": 6, "sprite": "Moving Platform (Small, Horizontal)", "x": 0, "y": 14, "misc": 64}, + {"screen": 6, "sprite": "Flower Block", "x": 17, "y": 19, "misc": 64}, + {"screen": 7, "sprite": "Unibo/Terekuribo", "x": 1, "y": 26, "misc": 32}, + {"screen": 7, "sprite": "Boo/Bomubomu", "x": 17, "y": 18, "misc": 64}, + {"screen": 8, "sprite": "Fire Piranha Plant", "x": 16, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Heart Block", "x": 23, "y": 5, "misc": 64}, + {"screen": 8, "sprite": "Flower Block", "x": 25, "y": 17, "misc": 64}, + {"screen": 9, "sprite": "Midway Bell", "x": 5, "y": 22, "misc": 32}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 19, "y": 22, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 2, "y": 27, "misc": 32}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 25, "y": 14, "misc": 160}, + {"screen": 11, "sprite": "Carrot Block", "x": 7, "y": 13, "misc": 32}, + {"screen": 11, "sprite": "Boo/Bomubomu", "x": 23, "y": 18, "misc": 160}, + {"screen": 13, "sprite": "Boo/Bomubomu", "x": 3, "y": 28, "misc": 32}, + {"screen": 13, "sprite": "Boo/Bomubomu", "x": 12, "y": 5, "misc": 64}, + {"screen": 14, "sprite": "Unibo/Terekuribo", "x": 3, "y": 28, "misc": 160}, + {"screen": 14, "sprite": "Boo/Bomubomu", "x": 5, "y": 18, "misc": 192}, + {"screen": 14, "sprite": "Unibo/Terekuribo", "x": 14, "y": 24, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 13, "misc": 64}], + "Pumpkin Zone 4": [ + {"screen": 1, "sprite": "Tosenbo/Pikku", "x": 19, "y": 30, "misc": 160}, + {"screen": 1, "sprite": "Piranha Plant", "x": 24, "y": 0, "misc": 64}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 9, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 24, "y": 21, "misc": 160}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 23, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Falling Spike on Chain", "x": 29, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Falling Spike on Chain", "x": 3, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Falling Spike on Chain", "x": 9, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Tosenbo/Pikku", "x": 28, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 7, "y": 11, "misc": 64}, + {"screen": 5, "sprite": "Boo/Bomubomu", "x": 17, "y": 26, "misc": 192}, + {"screen": 5, "sprite": "Heart Block", "x": 29, "y": 15, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 7, "sprite": "Midway Bell", "x": 15, "y": 24, "misc": 32}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 3, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Rerere/Poro", "x": 10, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 17, "y": 22, "misc": 160}, + {"screen": 8, "sprite": "Falling Spike on Chain", "x": 27, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Rerere/Poro", "x": 3, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Falling Spike on Chain", "x": 9, "y": 22, "misc": 160}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 19, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 25, "y": 26, "misc": 160}, + {"screen": 10, "sprite": "Masked Ghoul/Bullet Bill", "x": 31, "y": 22, "misc": 32}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 5, "y": 18, "misc": 32}, + {"screen": 12, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 16, "misc": 192}, + {"screen": 12, "sprite": "Masked Ghoul/Bullet Bill", "x": 25, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 6, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Flower Block", "x": 13, "y": 23, "misc": 32}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 18, "y": 16, "misc": 192}, + {"screen": 13, "sprite": "Money Bag Block", "x": 25, "y": 23, "misc": 32}, + {"screen": 14, "sprite": "Boo/Bomubomu", "x": 13, "y": 30, "misc": 160}], + "Mario Zone 1": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 5, "y": 23, "misc": 64}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 7, "y": 9, "misc": 64}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 13, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 13, "y": 30, "misc": 192}, + {"screen": 1, "sprite": "Spinning Spike (Vertical)", "x": 19, "y": 22, "misc": 0}, + {"screen": 1, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 19, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 13, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 25, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Spinning Platform (Vertical)", "x": 1, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Spinning Platform (Vertical)", "x": 7, "y": 18, "misc": 64}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 19, "y": 26, "misc": 192}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 31, "y": 14, "misc": 192}, + {"screen": 4, "sprite": "Spinning Platform (Vertical)", "x": 23, "y": 20, "misc": 64}, + {"screen": 4, "sprite": "Tatenoko", "x": 26, "y": 15, "misc": 192}, + {"screen": 4, "sprite": "Spinning Platform (Vertical)", "x": 29, "y": 20, "misc": 64}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 16, "misc": 192}, + {"screen": 5, "sprite": "Spinning Platform (Vertical)", "x": 19, "y": 22, "misc": 64}, + {"screen": 5, "sprite": "Spinning Platform (Vertical)", "x": 23, "y": 22, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 5, "y": 11, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 16, "y": 12, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 19, "y": 20, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 24, "misc": 192}, + {"screen": 8, "sprite": "Spinning Spike (Horizontal)/Unera", "x": 12, "y": 30, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 13, "y": 17, "misc": 64}, + {"screen": 9, "sprite": "Mushroom Block", "x": 3, "y": 19, "misc": 64}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 3, "y": 0, "misc": 96}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 11, "y": 0, "misc": 224}, + {"screen": 9, "sprite": "Neiji/Buichi", "x": 19, "y": 0, "misc": 224}, + {"screen": 9, "sprite": "Heart Block", "x": 27, "y": 7, "misc": 32}, + {"screen": 9, "sprite": "Spinning Platform (Vertical)", "x": 29, "y": 30, "misc": 32}, + {"screen": 10, "sprite": "Tatenoko", "x": 4, "y": 13, "misc": 32}, + {"screen": 10, "sprite": "Spinning Platform (Horizontal)/Skeleton Bee", "x": 7, "y": 21, "misc": 64}, + {"screen": 10, "sprite": "Carrot Block", "x": 9, "y": 7, "misc": 32}, + {"screen": 10, "sprite": "Spinning Platform (Vertical)", "x": 9, "y": 18, "misc": 32}, + {"screen": 10, "sprite": "Bonus Bell", "x": 19, "y": 17, "misc": 64}], + "Mario Zone 2": [ + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 9, "y": 28, "misc": 32}, + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 31, "y": 22, "misc": 160}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 18, "misc": 160}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 15, "y": 21, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 3, "y": 20, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 12, "y": 18, "misc": 160}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 28, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 3, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Heart", "x": 8, "y": 28, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 9, "y": 20, "misc": 192}, + {"screen": 5, "sprite": "Carrot Block", "x": 17, "y": 11, "misc": 64}, + {"screen": 5, "sprite": "Goomba", "x": 25, "y": 26, "misc": 192}, + {"screen": 5, "sprite": "Money Bag Block", "x": 27, "y": 19, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 3, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Star Block", "x": 7, "y": 11, "misc": 64}, + {"screen": 7, "sprite": "Noko Bombette/Bear", "x": 6, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Midway Bell", "x": 5, "y": 18, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 21, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 31, "y": 16, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 32}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 19, "y": 20, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 5, "y": 24, "misc": 32}, + {"screen": 11, "sprite": "Mushroom", "x": 1, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Goomba", "x": 9, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Flower", "x": 17, "y": 14, "misc": 32}, + {"screen": 11, "sprite": "Carrot", "x": 25, "y": 14, "misc": 32}, + {"screen": 12, "sprite": "Boo/Bomubomu", "x": 12, "y": 16, "misc": 32}, + {"screen": 12, "sprite": "Boo/Bomubomu", "x": 24, "y": 20, "misc": 160}, + {"screen": 13, "sprite": "Noko Bombette/Bear", "x": 16, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Noko Bombette/Bear", "x": 12, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Mario Zone 3": [ + {"screen": 1, "sprite": "Kurokyura/Jack-in-the-Box", "x": 15, "y": 23, "misc": 160}, + {"screen": 1, "sprite": "Kiddokatto", "x": 21, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Masked Ghoul/Bullet Bill", "x": 4, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Diagonal Ball on Chain", "x": 9, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Diagonal Ball on Chain", "x": 1, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Mushroom Block", "x": 13, "y": 17, "misc": 32}, + {"screen": 3, "sprite": "Diagonal Ball on Chain", "x": 25, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 160}, + {"screen": 4, "sprite": "Diagonal Ball on Chain", "x": 27, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 160}, + {"screen": 6, "sprite": "Carrot Block", "x": 9, "y": 21, "misc": 32}, + {"screen": 6, "sprite": "Kiddokatto", "x": 25, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 28, "misc": 32}, + {"screen": 7, "sprite": "Midway Bell", "x": 27, "y": 22, "misc": 32}, + {"screen": 8, "sprite": "Kurokyura/Jack-in-the-Box", "x": 11, "y": 21, "misc": 32}, + {"screen": 8, "sprite": "Heart Block", "x": 13, "y": 3, "misc": 32}, + {"screen": 8, "sprite": "Kiddokatto", "x": 31, "y": 30, "misc": 160}, + {"screen": 9, "sprite": "Claw Grabber", "x": 23, "y": 28, "misc": 32}, + {"screen": 10, "sprite": "Claw Grabber", "x": 13, "y": 28, "misc": 32}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 4, "y": 28, "misc": 64}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 5, "y": 20, "misc": 160}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 8, "y": 12, "misc": 192}, + {"screen": 11, "sprite": "Kiddokatto", "x": 26, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 23, "misc": 64}, + {"screen": 11, "sprite": "Masked Ghoul/Bullet Bill", "x": 28, "y": 18, "misc": 192}, + {"screen": 12, "sprite": "Claw Grabber", "x": 11, "y": 28, "misc": 32}, + {"screen": 12, "sprite": "Kiddokatto", "x": 21, "y": 20, "misc": 32}, + {"screen": 13, "sprite": "Mushroom Block", "x": 13, "y": 21, "misc": 32}, + {"screen": 13, "sprite": "Masked Ghoul/Bullet Bill", "x": 18, "y": 28, "misc": 160}, + {"screen": 13, "sprite": "Kurokyura/Jack-in-the-Box", "x": 25, "y": 21, "misc": 32}, + {"screen": 14, "sprite": "Diagonal Ball on Chain", "x": 9, "y": 30, "misc": 32}, + {"screen": 14, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 24, "misc": 160}, + {"screen": 15, "sprite": "Claw Grabber", "x": 3, "y": 18, "misc": 32}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 17, "misc": 32}], + "Mario Zone 4": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 9, "y": 17, "misc": 32}, + {"screen": 1, "sprite": "Spinning Spike/Tamara", "x": 9, "y": 25, "misc": 160}, + {"screen": 1, "sprite": "Spinning Spike/Tamara", "x": 29, "y": 25, "misc": 32}, + {"screen": 2, "sprite": "Masked Ghoul/Bullet Bill", "x": 12, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Spinning Spike/Tamara", "x": 29, "y": 21, "misc": 160}, + {"screen": 3, "sprite": "Spinning Spike/Tamara", "x": 15, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 26, "misc": 160}, + {"screen": 4, "sprite": "Masked Ghoul/Bullet Bill", "x": 24, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 2, "y": 26, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 22, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 2, "y": 14, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 14, "y": 8, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 26, "y": 2, "misc": 32}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 9, "y": 25, "misc": 160}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 15, "y": 21, "misc": 32}, + {"screen": 7, "sprite": "Spinning Spike/Tamara", "x": 21, "y": 25, "misc": 160}, + {"screen": 7, "sprite": "Mushroom Block", "x": 25, "y": 23, "misc": 0}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 17, "y": 26, "misc": 128}, + {"screen": 8, "sprite": "Masked Ghoul/Bullet Bill", "x": 30, "y": 24, "misc": 0}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 11, "y": 30, "misc": 128}, + {"screen": 9, "sprite": "Midway Bell", "x": 16, "y": 24, "misc": 0}, + {"screen": 9, "sprite": "Goomba", "x": 26, "y": 30, "misc": 0}, + {"screen": 10, "sprite": "Moving Saw (Ceiling)", "x": 17, "y": 26, "misc": 0}, + {"screen": 10, "sprite": "Moving Saw (Floor)", "x": 19, "y": 22, "misc": 128}, + {"screen": 11, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 0}, + {"screen": 11, "sprite": "Moving Saw (Ceiling)", "x": 25, "y": 26, "misc": 128}, + {"screen": 11, "sprite": "Moving Saw (Floor)", "x": 27, "y": 22, "misc": 0}, + {"screen": 11, "sprite": "Money Bag/Bopping Toady", "x": 29, "y": 30, "misc": 0}, + {"screen": 13, "sprite": "Moving Saw (Floor)", "x": 9, "y": 28, "misc": 128}, + {"screen": 13, "sprite": "Moving Saw (Floor)", "x": 19, "y": 28, "misc": 0}, + {"screen": 14, "sprite": "Spinning Spike/Tamara", "x": 13, "y": 25, "misc": 0}, + {"screen": 14, "sprite": "Goomba", "x": 21, "y": 30, "misc": 128}], + "Turtle Zone 1": [ + {"screen": 1, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 2, "y": 16, "misc": 192}, + {"screen": 1, "sprite": "Horizontal Blurp", "x": 12, "y": 21, "misc": 64}, + {"screen": 1, "sprite": "Mushroom Block", "x": 13, "y": 3, "misc": 64}, + {"screen": 2, "sprite": "Horizontal Blurp", "x": 1, "y": 18, "misc": 64}, + {"screen": 2, "sprite": "Spiny Cheep Cheep", "x": 11, "y": 26, "misc": 64}, + {"screen": 2, "sprite": "Cheep Cheep (Vertical)", "x": 26, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Goomba", "x": 3, "y": 8, "misc": 64}, + {"screen": 3, "sprite": "Goomba", "x": 17, "y": 8, "misc": 64}, + {"screen": 3, "sprite": "Star Block", "x": 17, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Cheep Cheep (Vertical)", "x": 18, "y": 28, "misc": 192}, + {"screen": 3, "sprite": "Heart Block", "x": 19, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Shark", "x": 27, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Paragoomba (Diagonal)", "x": 1, "y": 4, "misc": 64}, + {"screen": 4, "sprite": "Goomba", "x": 10, "y": 8, "misc": 64}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 1, "y": 16, "misc": 64}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 9, "y": 22, "misc": 192}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 16, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Shark", "x": 12, "y": 21, "misc": 64}, + {"screen": 6, "sprite": "Midway Bell", "x": 21, "y": 18, "misc": 64}, + {"screen": 6, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 25, "y": 16, "misc": 64}, + {"screen": 7, "sprite": "Spiny Cheep Cheep", "x": 21, "y": 17, "misc": 64}, + {"screen": 7, "sprite": "Horizontal Blurp", "x": 25, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Cheep Cheep (Vertical)", "x": 7, "y": 20, "misc": 64}, + {"screen": 8, "sprite": "Shark", "x": 15, "y": 14, "misc": 192}, + {"screen": 8, "sprite": "Spiny Cheep Cheep", "x": 25, "y": 24, "misc": 192}, + {"screen": 8, "sprite": "Mushroom Block", "x": 31, "y": 3, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 15, "y": 24, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 23, "y": 20, "misc": 192}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 29, "y": 26, "misc": 192}, + {"screen": 10, "sprite": "Shark", "x": 10, "y": 18, "misc": 192}, + {"screen": 10, "sprite": "Money Bag Block", "x": 11, "y": 31, "misc": 32}, + {"screen": 11, "sprite": "Shark", "x": 5, "y": 22, "misc": 64}, + {"screen": 11, "sprite": "Horizontal Blurp", "x": 16, "y": 28, "misc": 192}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 9, "misc": 64}, + {"screen": 11, "sprite": "Heart Block", "x": 27, "y": 23, "misc": 64}], + "Turtle Zone 2": [ + {"screen": 0, "sprite": "Shark", "x": 17, "y": 12, "misc": 192}, + {"screen": 0, "sprite": "Carrot Block", "x": 21, "y": 19, "misc": 64}, + {"screen": 0, "sprite": "Masked Ghoul/Bullet Bill", "x": 22, "y": 28, "misc": 192}, + {"screen": 1, "sprite": "Honebon/F Boy", "x": 13, "y": 12, "misc": 192}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Karakara", "x": 28, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Shark", "x": 7, "y": 10, "misc": 64}, + {"screen": 2, "sprite": "Karakara", "x": 17, "y": 27, "misc": 64}, + {"screen": 2, "sprite": "Karakara", "x": 23, "y": 22, "misc": 64}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 25, "y": 14, "misc": 32}, + {"screen": 3, "sprite": "Karakara", "x": 2, "y": 1, "misc": 64}, + {"screen": 3, "sprite": "Karakara", "x": 6, "y": 14, "misc": 192}, + {"screen": 3, "sprite": "Masked Ghoul/Bullet Bill", "x": 14, "y": 24, "misc": 192}, + {"screen": 3, "sprite": "Flower Block", "x": 21, "y": 11, "misc": 64}, + {"screen": 4, "sprite": "Pencil/Spikey", "x": 7, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 10, "y": 14, "misc": 160}, + {"screen": 4, "sprite": "Pencil/Spikey", "x": 11, "y": 26, "misc": 192}, + {"screen": 4, "sprite": "Karakara", "x": 21, "y": 22, "misc": 64}, + {"screen": 4, "sprite": "Karakara", "x": 28, "y": 12, "misc": 192}, + {"screen": 5, "sprite": "Pencil/Spikey", "x": 1, "y": 24, "misc": 192}, + {"screen": 5, "sprite": "Star Block", "x": 5, "y": 5, "misc": 64}, + {"screen": 5, "sprite": "Masked Ghoul/Bullet Bill", "x": 26, "y": 24, "misc": 192}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 30, "y": 10, "misc": 32}, + {"screen": 6, "sprite": "Masked Ghoul/Bullet Bill", "x": 6, "y": 28, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 10, "y": 22, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 14, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Midway Bell", "x": 15, "y": 4, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 18, "y": 10, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 26, "y": 2, "misc": 64}, + {"screen": 7, "sprite": "Karakara", "x": 8, "y": 14, "misc": 160}, + {"screen": 7, "sprite": "Karakara", "x": 19, "y": 27, "misc": 192}, + {"screen": 8, "sprite": "Flower", "x": 5, "y": 4, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 7, "y": 3, "misc": 64}, + {"screen": 8, "sprite": "Pencil/Spikey", "x": 11, "y": 24, "misc": 32}, + {"screen": 8, "sprite": "Money Bag Block", "x": 23, "y": 13, "misc": 64}, + {"screen": 9, "sprite": "Pencil/Spikey", "x": 9, "y": 24, "misc": 192}, + {"screen": 9, "sprite": "Pencil/Spikey", "x": 19, "y": 24, "misc": 64}, + {"screen": 10, "sprite": "Rising Platform", "x": 4, "y": 22, "misc": 64}, + {"screen": 10, "sprite": "Rising Platform", "x": 10, "y": 16, "misc": 64}, + {"screen": 10, "sprite": "Bonus Bell", "x": 21, "y": 9, "misc": 64}, + {"screen": 12, "sprite": "Pencil/Spikey", "x": 5, "y": 24, "misc": 192}, + {"screen": 12, "sprite": "Pencil/Spikey", "x": 9, "y": 24, "misc": 192}, + {"screen": 12, "sprite": "Karakara", "x": 19, "y": 24, "misc": 64}, + {"screen": 12, "sprite": "Karakara", "x": 26, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Karakara", "x": 1, "y": 26, "misc": 192}, + {"screen": 13, "sprite": "Pencil/Spikey", "x": 15, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Honebon/F Boy", "x": 24, "y": 28, "misc": 192}, + {"screen": 14, "sprite": "Pencil/Spikey", "x": 1, "y": 24, "misc": 192}, + {"screen": 14, "sprite": "Shark", "x": 14, "y": 26, "misc": 64}], + "Turtle Zone 3": [ + {"screen": 1, "sprite": "Ragumo/Aqua Kuribo", "x": 1, "y": 26, "misc": 160}, + {"screen": 1, "sprite": "Ragumo/Aqua Kuribo", "x": 31, "y": 22, "misc": 160}, + {"screen": 2, "sprite": "Carrot Block", "x": 15, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Pencil/Spikey", "x": 29, "y": 14, "misc": 160}, + {"screen": 3, "sprite": "Pencil/Spikey", "x": 13, "y": 22, "misc": 160}, + {"screen": 3, "sprite": "Pencil/Spikey", "x": 21, "y": 26, "misc": 32}, + {"screen": 4, "sprite": "Ragumo/Aqua Kuribo", "x": 5, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Vertical)", "x": 0, "y": 24, "misc": 160}, + {"screen": 5, "sprite": "Midway Bell", "x": 12, "y": 18, "misc": 32}, + {"screen": 5, "sprite": "Ragumo/Aqua Kuribo", "x": 27, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Mushroom Block", "x": 29, "y": 19, "misc": 32}, + {"screen": 6, "sprite": "Honebon/F Boy", "x": 1, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Ragumo/Aqua Kuribo", "x": 7, "y": 20, "misc": 160}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 24, "y": 20, "misc": 160}, + {"screen": 7, "sprite": "Ragumo/Aqua Kuribo", "x": 6, "y": 28, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 27, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Ragumo/Aqua Kuribo", "x": 7, "y": 28, "misc": 160}, + {"screen": 8, "sprite": "Ragumo/Aqua Kuribo", "x": 19, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 9, "sprite": "Honebon/F Boy", "x": 27, "y": 22, "misc": 160}, + {"screen": 9, "sprite": "Money Bag Block", "x": 29, "y": 11, "misc": 32}, + {"screen": 11, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 24, "misc": 160}, + {"screen": 11, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 160}], + "Hippo Zone": [ + {"screen": 0, "sprite": "Money Bag Block", "x": 5, "y": 7, "misc": 32}, + {"screen": 0, "sprite": "Heart Block", "x": 7, "y": 5, "misc": 0}, + {"screen": 0, "sprite": "Heart Block", "x": 31, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Heart Block", "x": 1, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Bubble", "x": 6, "y": 24, "misc": 0}, + {"screen": 1, "sprite": "Mushroom Block", "x": 27, "y": 9, "misc": 32}, + {"screen": 2, "sprite": "Toriuo", "x": 11, "y": 8, "misc": 160}, + {"screen": 2, "sprite": "Unibo/Terekuribo", "x": 25, "y": 26, "misc": 128}, + {"screen": 2, "sprite": "Toriuo", "x": 29, "y": 8, "misc": 160}, + {"screen": 3, "sprite": "Toriuo", "x": 11, "y": 8, "misc": 32}, + {"screen": 3, "sprite": "Unibo/Terekuribo", "x": 17, "y": 26, "misc": 128}, + {"screen": 3, "sprite": "Heart Block", "x": 17, "y": 25, "misc": 0}, + {"screen": 4, "sprite": "Toriuo", "x": 3, "y": 8, "misc": 160}, + {"screen": 4, "sprite": "Unibo/Terekuribo", "x": 9, "y": 26, "misc": 128}, + {"screen": 4, "sprite": "Toriuo", "x": 21, "y": 8, "misc": 32}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 6, "y": 10, "misc": 160}, + {"screen": 5, "sprite": "Mushroom Block", "x": 13, "y": 11, "misc": 32}, + {"screen": 5, "sprite": "Horizontal Blurp", "x": 19, "y": 12, "misc": 32}, + {"screen": 5, "sprite": "Unibo/Terekuribo", "x": 25, "y": 10, "misc": 128}, + {"screen": 5, "sprite": "Unibo/Terekuribo", "x": 27, "y": 18, "misc": 0}, + {"screen": 6, "sprite": "Unibo/Terekuribo", "x": 7, "y": 22, "misc": 128}, + {"screen": 6, "sprite": "Unibo/Terekuribo", "x": 11, "y": 12, "misc": 128}, + {"screen": 6, "sprite": "Horizontal Blurp", "x": 13, "y": 14, "misc": 160}, + {"screen": 6, "sprite": "Bubble", "x": 14, "y": 30, "misc": 0}, + {"screen": 7, "sprite": "Dondon", "x": 13, "y": 10, "misc": 128}, + {"screen": 7, "sprite": "Dondon", "x": 15, "y": 18, "misc": 128}, + {"screen": 7, "sprite": "Dondon", "x": 17, "y": 26, "misc": 0}, + {"screen": 7, "sprite": "Toriuo", "x": 25, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Toriuo", "x": 5, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Flower Block", "x": 19, "y": 25, "misc": 0}, + {"screen": 8, "sprite": "Toriuo", "x": 21, "y": 8, "misc": 160}, + {"screen": 8, "sprite": "Toriuo", "x": 31, "y": 8, "misc": 32}, + {"screen": 9, "sprite": "Money Bag Block", "x": 11, "y": 5, "misc": 0}, + {"screen": 9, "sprite": "Horizontal Blurp", "x": 15, "y": 12, "misc": 160}, + {"screen": 9, "sprite": "Horizontal Blurp", "x": 27, "y": 10, "misc": 160}, + {"screen": 10, "sprite": "Dondon", "x": 9, "y": 14, "misc": 0}, + {"screen": 10, "sprite": "Dondon", "x": 13, "y": 24, "misc": 0}, + {"screen": 10, "sprite": "Toriuo", "x": 19, "y": 8, "misc": 32}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 5, "misc": 0}], + "Space Zone 1": [ + {"screen": 1, "sprite": "Boo/Bomubomu", "x": 19, "y": 26, "misc": 160}, + {"screen": 2, "sprite": "Boo/Bomubomu", "x": 3, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Boo/Bomubomu", "x": 5, "y": 26, "misc": 160}, + {"screen": 3, "sprite": "Rerere/Poro", "x": 25, "y": 5, "misc": 160}, + {"screen": 4, "sprite": "Money Bag Block", "x": 9, "y": 21, "misc": 0}, + {"screen": 4, "sprite": "Money Bag Block", "x": 11, "y": 29, "misc": 0}, + {"screen": 4, "sprite": "Heart", "x": 13, "y": 6, "misc": 32}, + {"screen": 4, "sprite": "Mushroom Block", "x": 23, "y": 15, "misc": 32}, + {"screen": 5, "sprite": "No 48/Mogyo", "x": 1, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Heart", "x": 5, "y": 16, "misc": 0}, + {"screen": 5, "sprite": "Boo/Bomubomu", "x": 23, "y": 28, "misc": 160}, + {"screen": 6, "sprite": "Rerere/Poro", "x": 18, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 5, "y": 11, "misc": 32}, + {"screen": 7, "sprite": "Rerere/Poro", "x": 6, "y": 20, "misc": 160}, + {"screen": 7, "sprite": "Midway Bell", "x": 15, "y": 22, "misc": 32}, + {"screen": 7, "sprite": "Rerere/Poro", "x": 19, "y": 13, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 1, "y": 28, "misc": 32}, + {"screen": 8, "sprite": "Money Bag Block", "x": 7, "y": 21, "misc": 32}, + {"screen": 8, "sprite": "Boo/Bomubomu", "x": 17, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Heart Block", "x": 3, "y": 15, "misc": 0}, + {"screen": 9, "sprite": "Boo/Bomubomu", "x": 8, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Rerere/Poro", "x": 31, "y": 15, "misc": 160}, + {"screen": 10, "sprite": "Boo/Bomubomu", "x": 31, "y": 20, "misc": 32}, + {"screen": 11, "sprite": "Boo/Bomubomu", "x": 3, "y": 28, "misc": 32}, + {"screen": 11, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 32}], + "Space Zone 2": [ + {"screen": 2, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 5, "y": 22, "misc": 128}, + {"screen": 2, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 25, "y": 16, "misc": 128}, + {"screen": 2, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 27, "y": 30, "misc": 128}, + {"screen": 3, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 11, "y": 10, "misc": 128}, + {"screen": 4, "sprite": "Mushroom", "x": 1, "y": 6, "misc": 0}, + {"screen": 4, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 3, "y": 30, "misc": 128}, + {"screen": 4, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 23, "y": 26, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 1, "y": 22, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 9, "y": 26, "misc": 128}, + {"screen": 5, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 27, "y": 14, "misc": 0}, + {"screen": 6, "sprite": "Mushroom Block", "x": 13, "y": 15, "misc": 0}, + {"screen": 6, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 19, "y": 18, "misc": 128}, + {"screen": 7, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 22, "misc": 128}, + {"screen": 7, "sprite": "Mushroom Block", "x": 17, "y": 9, "misc": 0}, + {"screen": 7, "sprite": "Tosenbo/Pikku", "x": 27, "y": 24, "misc": 128}, + {"screen": 8, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 3, "y": 16, "misc": 128}, + {"screen": 9, "sprite": "Tosenbo/Pikku", "x": 3, "y": 16, "misc": 0}, + {"screen": 9, "sprite": "Tosenbo/Pikku", "x": 25, "y": 16, "misc": 0}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 13, "y": 16, "misc": 128}, + {"screen": 10, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 25, "y": 16, "misc": 128}, + {"screen": 11, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 15, "y": 20, "misc": 128}, + {"screen": 11, "sprite": "Star (Horizontal)/Blurp (Vertical)", "x": 25, "y": 22, "misc": 0}, + {"screen": 12, "sprite": "Star (Vertical)/Blurp (Horizontal)", "x": 5, "y": 16, "misc": 128}, + {"screen": 12, "sprite": "Mushroom Block", "x": 31, "y": 11, "misc": 0}, + {"screen": 13, "sprite": "Star Block", "x": 5, "y": 17, "misc": 0}, + {"screen": 13, "sprite": "Tosenbo/Pikku", "x": 7, "y": 17, "misc": 128}, + {"screen": 13, "sprite": "Midway Bell", "x": 19, "y": 20, "misc": 0}, + {"screen": 13, "sprite": "Mushroom", "x": 31, "y": 6, "misc": 0}, + {"screen": 15, "sprite": "Tosenbo/Pikku", "x": 1, "y": 26, "misc": 128}, + {"screen": 15, "sprite": "Mushroom Block", "x": 17, "y": 19, "misc": 0}], + "Macro Zone 1": [ + {"screen": 1, "sprite": "Kyotonbo", "x": 1, "y": 22, "misc": 0}, + {"screen": 1, "sprite": "Goronto", "x": 23, "y": 26, "misc": 128}, + {"screen": 2, "sprite": "Moving Platform (Large, Horizontal)", "x": 20, "y": 31, + "misc": 64}, {"screen": 3, "sprite": "Chikunto", "x": 1, "y": 16, "misc": 64}, + {"screen": 3, "sprite": "Mushroom Block", "x": 3, "y": 21, "misc": 64}, + {"screen": 4, "sprite": "Chikunto", "x": 19, "y": 28, "misc": 192}, + {"screen": 5, "sprite": "Big Diagonal Moving Platform", "x": 12, "y": 23, + "misc": 64}, + {"screen": 5, "sprite": "Moving Platform (Large, Horizontal)", "x": 14, "y": 31, + "misc": 64}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 13, "misc": 64}, + {"screen": 6, "sprite": "Dokanto", "x": 25, "y": 28, "misc": 64}, + {"screen": 6, "sprite": "Carrot Block", "x": 31, "y": 27, "misc": 64}, + {"screen": 7, "sprite": "Kyotonbo", "x": 27, "y": 28, "misc": 64}, + {"screen": 8, "sprite": "Flower Block", "x": 1, "y": 27, "misc": 64}, + {"screen": 8, "sprite": "Chikunto", "x": 9, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Heart Block", "x": 11, "y": 27, "misc": 64}, + {"screen": 9, "sprite": "Chikunto", "x": 19, "y": 28, "misc": 192}, + {"screen": 9, "sprite": "Money Bag Block", "x": 25, "y": 27, "misc": 64}, + {"screen": 9, "sprite": "Goronto", "x": 29, "y": 28, "misc": 64}, + {"screen": 10, "sprite": "Heart Block", "x": 9, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Heart Block", "x": 13, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Midway Bell", "x": 15, "y": 26, "misc": 64}, + {"screen": 10, "sprite": "Heart Block", "x": 21, "y": 9, "misc": 32}, + {"screen": 10, "sprite": "Moving Platform (Large, Horizontal)", "x": 30, "y": 31, + "misc": 64}, + {"screen": 11, "sprite": "Carrot Block", "x": 3, "y": 15, "misc": 64}, + {"screen": 11, "sprite": "Falling Platform", "x": 26, "y": 17, "misc": 64}, + {"screen": 12, "sprite": "Moving Platform (Large, Horizontal)", "x": 28, "y": 31, + "misc": 64}, {"screen": 13, "sprite": "Kyotonbo", "x": 3, "y": 18, "misc": 192}, + {"screen": 13, "sprite": "Chikunto", "x": 17, "y": 28, "misc": 64}, + {"screen": 13, "sprite": "Dokanto", "x": 25, "y": 18, "misc": 64}, + {"screen": 14, "sprite": "Kyotonbo", "x": 0, "y": 28, "misc": 32}, + {"screen": 14, "sprite": "Moving Platform (Large, Horizontal)", "x": 0, "y": 31, + "misc": 64}, {"screen": 14, "sprite": "Goronto", "x": 12, "y": 26, "misc": 32}, + {"screen": 14, "sprite": "Dokanto", "x": 19, "y": 28, "misc": 192}, + {"screen": 14, "sprite": "Flower Block", "x": 21, "y": 21, "misc": 64}, + {"screen": 15, "sprite": "Big Diagonal Moving Platform", "x": 13, "y": 21, + "misc": 64}, + {"screen": 15, "sprite": "Bonus Bell", "x": 21, "y": 11, "misc": 64}], + "Macro Zone 2": [ + {"screen": 1, "sprite": "Ant", "x": 10, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Mushroom Block", "x": 19, "y": 19, "misc": 32}, + {"screen": 1, "sprite": "Piranha Plant", "x": 28, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Ant", "x": 21, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Battle Beetle", "x": 23, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Ant", "x": 5, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Fire Piranha Plant", "x": 22, "y": 2, "misc": 192}, + {"screen": 4, "sprite": "Ant", "x": 8, "y": 26, "misc": 160}, + {"screen": 4, "sprite": "Fire Piranha Plant", "x": 18, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 160}, + {"screen": 5, "sprite": "Battle Beetle", "x": 16, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 5, "y": 26, "misc": 192}, + {"screen": 6, "sprite": "Carrot Block", "x": 7, "y": 15, "misc": 64}, + {"screen": 6, "sprite": "Ant", "x": 16, "y": 18, "misc": 64}, + {"screen": 7, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 0, "y": 23, "misc": 192}, + {"screen": 7, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 11, "y": 28, "misc": 64}, + {"screen": 7, "sprite": "Fire Piranha Plant", "x": 30, "y": 20, "misc": 192}, + {"screen": 8, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 15, "y": 28, "misc": 64}, + {"screen": 8, "sprite": "Star Block", "x": 19, "y": 9, "misc": 64}, + {"screen": 8, "sprite": "Piranha Plant", "x": 30, "y": 22, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 11, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Cheep Cheep (Vertical)", "x": 17, "y": 28, "misc": 64}, + {"screen": 9, "sprite": "Midway Bell", "x": 31, "y": 14, "misc": 64}, + {"screen": 10, "sprite": "Ant", "x": 1, "y": 18, "misc": 64}, + {"screen": 10, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 31, "y": 28, "misc": 64}, + {"screen": 11, "sprite": "Ant", "x": 3, "y": 16, "misc": 64}, + {"screen": 11, "sprite": "Star Block", "x": 9, "y": 15, "misc": 64}, + {"screen": 11, "sprite": "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "x": 19, "y": 15, "misc": 160}, + {"screen": 11, "sprite": "Cheep Cheep (Vertical)", "x": 21, "y": 29, "misc": 64}, + {"screen": 12, "sprite": "Be", "x": 9, "y": 14, "misc": 32}, + {"screen": 12, "sprite": "Be", "x": 21, "y": 24, "misc": 32}, + {"screen": 12, "sprite": "Be", "x": 27, "y": 24, "misc": 32}, + {"screen": 13, "sprite": "Mushroom Block", "x": 7, "y": 23, "misc": 32}, + {"screen": 13, "sprite": "Bonus Bell", "x": 21, "y": 15, "misc": 32}], + "Macro Zone 3": [ + {"screen": 1, "sprite": "Koopa Troopa", "x": 0, "y": 26, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 9, "y": 22, "misc": 32}, + {"screen": 1, "sprite": "Carrot Block", "x": 17, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 23, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 4, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 29, "y": 26, "misc": 32}, + {"screen": 3, "sprite": "Piranha Plant", "x": 28, "y": 2, "misc": 64}, + {"screen": 4, "sprite": "Piranha Plant (Downward)/Grubby", "x": 4, "y": 25, "misc": 160}, + {"screen": 4, "sprite": "Goomba", "x": 14, "y": 30, "misc": 160}, + {"screen": 4, "sprite": "Goomba", "x": 30, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant (Downward)/Grubby", "x": 8, "y": 25, "misc": 32}, + {"screen": 5, "sprite": "Money Bag Block", "x": 11, "y": 21, "misc": 64}, + {"screen": 5, "sprite": "Honebon/F Boy", "x": 11, "y": 30, "misc": 64}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 23, "y": 28, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 15, "y": 26, "misc": 64}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 23, "y": 26, "misc": 64}, + {"screen": 7, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 11, "y": 26, "misc": 64}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Heart Block", "x": 3, "y": 5, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 7, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 17, "y": 26, "misc": 64}, + {"screen": 8, "sprite": "Star Block", "x": 29, "y": 23, "misc": 64}, + {"screen": 8, "sprite": "Midway Bell", "x": 31, "y": 22, "misc": 32}, + {"screen": 9, "sprite": "Be", "x": 31, "y": 18, "misc": 32}, + {"screen": 10, "sprite": "Be", "x": 11, "y": 18, "misc": 32}, + {"screen": 11, "sprite": "Piranha Plant", "x": 16, "y": 24, "misc": 160}, + {"screen": 12, "sprite": "Carrot Block", "x": 23, "y": 17, "misc": 32}, + {"screen": 13, "sprite": "Koopa Troopa", "x": 7, "y": 4, "misc": 160}, + {"screen": 13, "sprite": "Paragoomba (Vertical)", "x": 15, "y": 24, "misc": 128}, + {"screen": 13, "sprite": "Bonus Bell", "x": 23, "y": 5, "misc": 0}], + "Macro Zone 4": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 7, "y": 28, "misc": 160}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 17, "y": 24, "misc": 32}, + {"screen": 2, "sprite": "Runaway Heart Block/Bibi", "x": 5, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 11, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 21, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Piranha Plant", "x": 6, "y": 24, "misc": 32}, + {"screen": 5, "sprite": "Piranha Plant (Downward)/Grubby", "x": 4, "y": 25, "misc": 32}, + {"screen": 5, "sprite": "Money Bag Block", "x": 11, "y": 7, "misc": 32}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 19, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Goomba", "x": 7, "y": 30, "misc": 160}, + {"screen": 6, "sprite": "Goomba", "x": 11, "y": 18, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 25, "y": 30, "misc": 160}, + {"screen": 7, "sprite": "Runaway Heart Block/Bibi", "x": 5, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Fire Piranha Plant", "x": 24, "y": 30, "misc": 160}, + {"screen": 8, "sprite": "Midway Bell", "x": 3, "y": 20, "misc": 32}, + {"screen": 8, "sprite": "Piranha Plant", "x": 8, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Goomba", "x": 26, "y": 24, "misc": 32}, + {"screen": 9, "sprite": "Mushroom Block", "x": 1, "y": 11, "misc": 32}, + {"screen": 9, "sprite": "Goomba", "x": 1, "y": 20, "misc": 32}, + {"screen": 9, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 16, "misc": 160}, + {"screen": 10, "sprite": "Paragoomba (Diagonal)", "x": 29, "y": 26, "misc": 160}, + {"screen": 11, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 26, "misc": 32}], + "Mario's Castle": [ + {"screen": 0, "sprite": "Mushroom Block", "x": 15, "y": 17, "misc": 32}, + {"screen": 1, "sprite": "Falling Bone Platform", "x": 14, "y": 27, "misc": 32}, + {"screen": 1, "sprite": "Falling Bone Platform", "x": 22, "y": 27, "misc": 32}, + {"screen": 1, "sprite": "Skull Platform", "x": 25, "y": 30, "misc": 64}, + {"screen": 1, "sprite": "Rising Bone Platform", "x": 30, "y": 28, "misc": 32}, + {"screen": 2, "sprite": "Skull Platform", "x": 5, "y": 30, "misc": 64}, + {"screen": 2, "sprite": "Falling Bone Platform", "x": 16, "y": 27, "misc": 32}, + {"screen": 2, "sprite": "Falling Bone Platform", "x": 24, "y": 27, "misc": 32}, + {"screen": 2, "sprite": "Skull Platform", "x": 29, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Rising Bone Platform", "x": 0, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 3, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Rising Bone Platform", "x": 18, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 25, "y": 30, "misc": 64}, + {"screen": 3, "sprite": "Falling Bone Platform", "x": 26, "y": 27, "misc": 32}, + {"screen": 3, "sprite": "Skull Platform", "x": 27, "y": 30, "misc": 64}, + {"screen": 4, "sprite": "Rising Bone Platform", "x": 2, "y": 28, "misc": 32}, + {"screen": 4, "sprite": "Genkottsu (1.5 Tiles)", "x": 22, "y": 31, "misc": 64}, + {"screen": 5, "sprite": "Genkottsu (2 Tiles)", "x": 6, "y": 31, "misc": 64}, + {"screen": 5, "sprite": "Karamenbo", "x": 14, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Karamenbo", "x": 20, "y": 20, "misc": 32}, + {"screen": 5, "sprite": "Genkottsu (2 Tiles)", "x": 22, "y": 31, "misc": 64}, + {"screen": 6, "sprite": "Karamenbo", "x": 1, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Karamenbo", "x": 8, "y": 20, "misc": 32}, + {"screen": 6, "sprite": "Karamenbo", "x": 21, "y": 20, "misc": 32}, + {"screen": 7, "sprite": "Propeller Platform", "x": 4, "y": 30, "misc": 64}, + {"screen": 7, "sprite": "Propeller Platform", "x": 16, "y": 30, "misc": 64}, + {"screen": 7, "sprite": "Floating Face", "x": 19, "y": 26, "misc": 32}, + {"screen": 8, "sprite": "Propeller Platform", "x": 4, "y": 30, "misc": 64}, + {"screen": 8, "sprite": "Floating Face", "x": 17, "y": 29, "misc": 32}, + {"screen": 8, "sprite": "Floating Face", "x": 17, "y": 23, "misc": 32}, + {"screen": 8, "sprite": "Propeller Platform", "x": 18, "y": 30, "misc": 64}, + {"screen": 9, "sprite": "Floating Face", "x": 15, "y": 28, "misc": 32}, + {"screen": 9, "sprite": "Floating Face", "x": 16, "y": 22, "misc": 32}, + {"screen": 10, "sprite": "Mushroom Block", "x": 1, "y": 23, "misc": 64}, + {"screen": 10, "sprite": "Spike Ball (Large)", "x": 11, "y": 28, "misc": 64}, + {"screen": 10, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 10, "sprite": "Spike Ball (Small)", "x": 29, "y": 30, "misc": 64}, + {"screen": 11, "sprite": "Fire Pakkun Zo (Left)", "x": 8, "y": 28, "misc": 192}, + {"screen": 11, "sprite": "Fire Pakkun Zo (Left)", "x": 14, "y": 26, "misc": 64}, + {"screen": 11, "sprite": "Spike Ball (Large)", "x": 31, "y": 30, "misc": 192}, + {"screen": 12, "sprite": "Fire Pakkun Zo (Large)", "x": 15, "y": 26, "misc": 64}, + {"screen": 12, "sprite": "Fire Pakkun Zo (Left)", "x": 24, "y": 28, "misc": 192}, + {"screen": 13, "sprite": "Fire Pakkun Zo (Left)", "x": 0, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Fire Pakkun Zo (Left)", "x": 8, "y": 24, "misc": 64}, + {"screen": 13, "sprite": "Spike Ball (Large)", "x": 29, "y": 30, "misc": 64}, + {"screen": 14, "sprite": "Spike Ball (Small)", "x": 12, "y": 26, "misc": 192}, + {"screen": 15, "sprite": "Fire Pakkun Zo (Right)", "x": 4, "y": 16, "misc": 64}, + {"screen": 15, "sprite": "Mushroom Block", "x": 15, "y": 19, "misc": 32}], + "Scenic Course": [ + {"screen": 1, "sprite": "Paragoomba (Diagonal)", "x": 1, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 11, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Paragoomba (Diagonal)", "x": 21, "y": 30, "misc": 32}, + {"screen": 1, "sprite": "Goomba", "x": 31, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Diagonal)", "x": 9, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Mushroom Block", "x": 15, "y": 23, "misc": 32}, + {"screen": 2, "sprite": "Goomba", "x": 19, "y": 30, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Diagonal)", "x": 29, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Diagonal)", "x": 7, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 3, "sprite": "Star Block", "x": 19, "y": 23, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Diagonal)", "x": 27, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 5, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Mushroom Block", "x": 17, "y": 23, "misc": 32}, + {"screen": 4, "sprite": "Paragoomba (Diagonal)", "x": 25, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 3, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Paragoomba (Diagonal)", "x": 13, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 17, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 1, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 11, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 21, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Paragoomba (Diagonal)", "x": 31, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Paragoomba (Diagonal)", "x": 9, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 11, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Paragoomba (Diagonal)", "x": 19, "y": 30, "misc": 32}], + "Turtle Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 7, "y": 21, "misc": 32}, + {"screen": 1, "sprite": "Heart Block", "x": 27, "y": 15, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 29, "y": 28, "misc": 32}, + {"screen": 3, "sprite": "Flower Block", "x": 11, "y": 21, "misc": 32}, + {"screen": 4, "sprite": "Money Bag Block", "x": 1, "y": 19, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 31, "y": 28, "misc": 32}, + {"screen": 5, "sprite": "Carrot Block", "x": 15, "y": 21, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Piranha Plant", "x": 6, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Mushroom Block", "x": 19, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Flower Block", "x": 21, "y": 23, "misc": 32}, + {"screen": 7, "sprite": "Carrot Block", "x": 23, "y": 23, "misc": 32}], + "Pumpkin Zone Secret Course 1": [ + {"screen": 0, "sprite": "Carrot Block", "x": 29, "y": 29, "misc": 0}, + {"screen": 1, "sprite": "Paragoomba (Vertical)", "x": 22, "y": 0, "misc": 32}, + {"screen": 2, "sprite": "Paragoomba (Vertical)", "x": 14, "y": 2, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 6, "y": 4, "misc": 32}, + {"screen": 3, "sprite": "Paragoomba (Vertical)", "x": 30, "y": 30, "misc": 0}, + {"screen": 4, "sprite": "Paragoomba (Vertical)", "x": 23, "y": 4, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Goomba", "x": 25, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 19, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Goomba", "x": 29, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Goomba", "x": 11, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Goomba", "x": 29, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Goomba", "x": 15, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Star", "x": 25, "y": 24, "misc": 32}], + "Space Zone Secret Course": [ + {"screen": 2, "sprite": "Rerere/Poro", "x": 2, "y": 2, "misc": 32}, + {"screen": 3, "sprite": "Rerere/Poro", "x": 14, "y": 20, "misc": 0}, + {"screen": 4, "sprite": "Heart", "x": 3, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Heart", "x": 5, "y": 22, "misc": 32}, + {"screen": 4, "sprite": "Rerere/Poro", "x": 26, "y": 2, "misc": 32}, + {"screen": 5, "sprite": "Heart Block", "x": 21, "y": 19, "misc": 0}], + "Tree Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 3, "y": 13, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 9, "y": 24, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 13, "y": 14, "misc": 32}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 25, "y": 16, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 3, "y": 20, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 19, "y": 22, "misc": 32}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 27, "y": 22, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 11, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 19, "y": 24, "misc": 32}, + {"screen": 3, "sprite": "Koopa Troopa", "x": 31, "y": 26, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 9, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 25, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 11, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 29, "y": 30, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 9, "y": 13, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 17, "y": 26, "misc": 32}, + {"screen": 6, "sprite": "Koopa Troopa", "x": 27, "y": 26, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 1, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 11, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 21, "y": 30, "misc": 32}, + {"screen": 7, "sprite": "Koopa Troopa", "x": 31, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 7, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 17, "y": 30, "misc": 32}, + {"screen": 8, "sprite": "Koopa Troopa", "x": 27, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 5, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 13, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Koopa Troopa", "x": 21, "y": 30, "misc": 32}, + {"screen": 9, "sprite": "Heart Block", "x": 31, "y": 13, "misc": 32}], + "Macro Zone Secret Course": [ + {"screen": 1, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 32}, + {"screen": 1, "sprite": "Falling Platform", "x": 28, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Falling Platform", "x": 12, "y": 26, "misc": 32}, + {"screen": 2, "sprite": "Falling Platform", "x": 18, "y": 26, "misc": 32}, + {"screen": 3, "sprite": "Heart Block", "x": 11, "y": 21, "misc": 32}, + {"screen": 5, "sprite": "Flower Block", "x": 17, "y": 17, "misc": 32}, + {"screen": 6, "sprite": "Heart Block", "x": 25, "y": 27, "misc": 32}], + "Pumpkin Zone Secret Course 2": [ + {"screen": 0, "sprite": "Flower Block", "x": 25, "y": 11, "misc": 0}, + {"screen": 1, "sprite": "Heart Block", "x": 9, "y": 17, "misc": 0}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 16, "y": 20, "misc": 0}, + {"screen": 1, "sprite": "Heart Block", "x": 23, "y": 15, "misc": 0}, + {"screen": 1, "sprite": "Koopa Troopa", "x": 29, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Heart Block", "x": 5, "y": 13, "misc": 0}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 13, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Goomba", "x": 21, "y": 20, "misc": 0}, + {"screen": 2, "sprite": "Koopa Troopa", "x": 31, "y": 20, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 17, "y": 17, "misc": 0}, + {"screen": 3, "sprite": "Heart Block", "x": 25, "y": 13, "misc": 0}, + {"screen": 4, "sprite": "Koopa Troopa", "x": 1, "y": 20, "misc": 0}, + {"screen": 4, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 2, "y": 22, "misc": 0}, + {"screen": 5, "sprite": "Koopa Troopa", "x": 10, "y": 22, "misc": 0}, + {"screen": 5, "sprite": "Mushroom Block", "x": 11, "y": 15, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 5, "sprite": "Falling Platform", "x": 26, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 2, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 10, "y": 24, "misc": 0}, + {"screen": 6, "sprite": "Falling Platform", "x": 18, "y": 24, "misc": 0}, + {"screen": 7, "sprite": "Goomba", "x": 13, "y": 18, "misc": 0}, + {"screen": 7, "sprite": "Heart Block", "x": 15, "y": 17, "misc": 0}, + {"screen": 7, "sprite": "Goomba", "x": 29, "y": 18, "misc": 0}, + {"screen": 8, "sprite": "Heart Block", "x": 9, "y": 17, "misc": 0}, + {"screen": 8, "sprite": "Goomba", "x": 11, "y": 18, "misc": 0}, + {"screen": 8, "sprite": "Heart Block", "x": 23, "y": 17, "misc": 0}, + {"screen": 8, "sprite": "Goomba", "x": 25, "y": 18, "misc": 0}, + {"screen": 9, "sprite": "Falling Platform", "x": 12, "y": 20, "misc": 0}, + {"screen": 9, "sprite": "Heart", "x": 23, "y": 16, "misc": 0}, + {"screen": 10, "sprite": "Falling Platform", "x": 0, "y": 22, "misc": 0}, + {"screen": 10, "sprite": "Heart", "x": 17, "y": 14, "misc": 0}]} diff --git a/worlds/messenger/__init__.py b/worlds/messenger/__init__.py index 2382a46c314f..88a0cec2caad 100644 --- a/worlds/messenger/__init__.py +++ b/worlds/messenger/__init__.py @@ -6,23 +6,32 @@ from Utils import output_path from settings import FilePath, Group from worlds.AutoWorld import WebWorld, World -from worlds.LauncherComponents import Component, Type, components +from worlds.LauncherComponents import Component, Type, components, icon_paths from .client_setup import launch_game from .connections import CONNECTIONS, RANDOMIZED_CONNECTIONS, TRANSITIONS from .constants import ALL_ITEMS, ALWAYS_LOCATIONS, BOSS_LOCATIONS, FILLER, NOTES, PHOBEKINS, PROG_ITEMS, TRAPS, \ USEFUL_ITEMS -from .options import AvailablePortals, Goal, Logic, MessengerOptions, NotesNeeded, ShuffleTransitions +from .options import AvailablePortals, Goal, Logic, MessengerOptions, NotesNeeded, option_groups, ShuffleTransitions from .portals import PORTALS, add_closed_portal_reqs, disconnect_portals, shuffle_portals, validate_portals from .regions import LEVELS, MEGA_SHARDS, LOCATIONS, REGION_CONNECTIONS from .rules import MessengerHardRules, MessengerOOBRules, MessengerRules from .shop import FIGURINES, PROG_SHOP_ITEMS, SHOP_ITEMS, USEFUL_SHOP_ITEMS, shuffle_shop_prices -from .subclasses import MessengerEntrance, MessengerItem, MessengerRegion, MessengerShopLocation -from .transitions import shuffle_transitions +from .subclasses import MessengerItem, MessengerRegion, MessengerShopLocation +from .transitions import disconnect_entrances, shuffle_transitions components.append( - Component("The Messenger", component_type=Type.CLIENT, func=launch_game, game_name="The Messenger", supports_uri=True) + Component( + "The Messenger", + component_type=Type.CLIENT, + func=launch_game, + game_name="The Messenger", + supports_uri=True, + icon="The Messenger", + description="Launch The Messenger.\nInstalls and checks for updates for the randomizer.") ) +icon_paths["The Messenger"] = f"ap:{__name__}/assets/component_icon.png" + class MessengerSettings(Group): class GamePath(FilePath): @@ -35,6 +44,7 @@ class GamePath(FilePath): class MessengerWeb(WebWorld): theme = "ocean" + rich_text_options_doc = True bug_report_page = "https://github.com/alwaysintreble/TheMessengerRandomizerModAP/issues" @@ -56,6 +66,7 @@ class MessengerWeb(WebWorld): ) tutorials = [tut_en, plando_en] + option_groups = option_groups class MessengerWorld(World): @@ -266,9 +277,11 @@ def set_rules(self) -> None: # MessengerOOBRules(self).set_messenger_rules() def connect_entrances(self) -> None: + if self.options.shuffle_transitions: + disconnect_entrances(self) add_closed_portal_reqs(self) # i need portal shuffle to happen after rules exist so i can validate it - attempts = 5 + attempts = 20 if self.options.shuffle_portals: self.portal_mapping = [] self.spoiler_portal_mapping = {} @@ -424,13 +437,13 @@ def create_group(cls, multiworld: "MultiWorld", new_player_id: int, players: set def collect(self, state: "CollectionState", item: "Item") -> bool: change = super().collect(state, item) if change and "Time Shard" in item.name: - state.prog_items[self.player]["Shards"] += int(item.name.strip("Time Shard ()")) + state.add_item("Shards", self.player, int(item.name.strip("Time Shard ()"))) return change def remove(self, state: "CollectionState", item: "Item") -> bool: change = super().remove(state, item) if change and "Time Shard" in item.name: - state.prog_items[self.player]["Shards"] -= int(item.name.strip("Time Shard ()")) + state.remove_item("Shards", self.player, int(item.name.strip("Time Shard ()"))) return change @classmethod diff --git a/worlds/messenger/assets/component_icon.png b/worlds/messenger/assets/component_icon.png new file mode 100644 index 000000000000..5ee91224ca06 Binary files /dev/null and b/worlds/messenger/assets/component_icon.png differ diff --git a/worlds/messenger/client_setup.py b/worlds/messenger/client_setup.py index 6b98a1b44013..3ef1df75cc13 100644 --- a/worlds/messenger/client_setup.py +++ b/worlds/messenger/client_setup.py @@ -2,35 +2,28 @@ import io import logging import os.path +import requests import subprocess import urllib.request from shutil import which -from typing import Any +from typing import Any, Callable, TYPE_CHECKING from zipfile import ZipFile -from Utils import open_file - -import requests +from Utils import is_windows, messagebox, open_file, tuplize_version -from Utils import is_windows, messagebox, tuplize_version +if TYPE_CHECKING: + from kvui import ButtonsPrompt MOD_URL = "https://api.github.com/repos/alwaysintreble/TheMessengerRandomizerModAP/releases/latest" -def ask_yes_no_cancel(title: str, text: str) -> bool | None: - """ - Wrapper for tkinter.messagebox.askyesnocancel, that creates a popup dialog box with yes, no, and cancel buttons. +def create_yes_no_popup(title: str, text: str, callback: Callable[[str], None]) -> "ButtonsPrompt": + from kvui import ButtonsPrompt + buttons = ["Yes", "No", "Cancel"] - :param title: Title to be displayed at the top of the message box. - :param text: Text to be displayed inside the message box. - :return: Returns True if yes, False if no, None if cancel. - """ - from tkinter import Tk, messagebox - root = Tk() - root.withdraw() - ret = messagebox.askyesnocancel(title, text) - root.update() - return ret + prompt = ButtonsPrompt(title, text, callback, *buttons) + prompt.open() + return prompt def launch_game(*args) -> None: @@ -151,6 +144,76 @@ def available_mod_update(latest_version: str) -> bool: # one of the alpha builds return "alpha" in latest_version or tuplize_version(latest_version) > tuplize_version(installed_version) + def after_courier_install_popup(answer: str) -> None: + """Gets called if the user doesn't have courier installed. Handle the button they pressed.""" + nonlocal prompt + + prompt.dismiss() + if answer in ("No", "Cancel"): + return + logging.info("Installing Courier") + install_courier() + prompt = create_yes_no_popup("Install Mod", + "No randomizer mod detected. Would you like to install now?", + after_mod_install_popup) + + def after_mod_install_popup(answer: str) -> None: + """Gets called if the user has courier but mod isn't installed, or there's an available update.""" + nonlocal prompt + + prompt.dismiss() + if answer in ("No", "Cancel"): + return + logging.info("Installing Mod") + install_mod() + prompt = create_yes_no_popup("Launch Game", + "Courier and Game mod installed successfully. Launch game now?", + launch) + + def after_mod_update_popup(answer: str) -> None: + """Gets called if there's an available update.""" + nonlocal prompt + + prompt.dismiss() + if answer == "Cancel": + return + if answer == "Yes": + logging.info("Updating Mod") + install_mod() + prompt = create_yes_no_popup("Launch Game", + "Courier and Game mod installed successfully. Launch game now?", + launch) + else: + prompt = create_yes_no_popup("Launch Game", + "Game Mod not updated. Launch game now?", + launch) + + def launch(answer: str | None = None) -> None: + """Launch the game.""" + nonlocal args + + if prompt: + prompt.dismiss() + if answer and answer in ("No", "Cancel"): + return + + parser = argparse.ArgumentParser(description="Messenger Client Launcher") + parser.add_argument("url", type=str, nargs="?", help="Archipelago Webhost uri to auto connect to.") + args = parser.parse_args(args) + + if not is_windows: + if args.url: + open_file(f"steam://rungameid/764790//{args.url}/") + else: + open_file("steam://rungameid/764790") + else: + os.chdir(game_folder) + if args.url: + subprocess.Popen([MessengerWorld.settings.game_path, str(args.url)]) + else: + subprocess.Popen(MessengerWorld.settings.game_path) + os.chdir(working_directory) + from . import MessengerWorld try: game_folder = os.path.dirname(MessengerWorld.settings.game_path) @@ -172,49 +235,24 @@ def available_mod_update(latest_version: str) -> bool: except ImportError: pass if not courier_installed(): - should_install = ask_yes_no_cancel("Install Courier", - "No Courier installation detected. Would you like to install now?") - if not should_install: - return - logging.info("Installing Courier") - install_courier() + prompt = create_yes_no_popup("Install Courier", + "No Courier installation detected. Would you like to install now?", + after_courier_install_popup) + return if not mod_installed(): - should_install = ask_yes_no_cancel("Install Mod", - "No randomizer mod detected. Would you like to install now?") - if not should_install: - return - logging.info("Installing Mod") - install_mod() + prompt = create_yes_no_popup("Install Mod", + "No randomizer mod detected. Would you like to install now?", + after_mod_install_popup) + return else: latest = request_data(MOD_URL)["tag_name"] if available_mod_update(latest): - should_update = ask_yes_no_cancel("Update Mod", - f"New mod version detected. Would you like to update to {latest} now?") - if should_update: - logging.info("Updating mod") - install_mod() - elif should_update is None: - return - - if not args: - should_launch = ask_yes_no_cancel("Launch Game", - "Mod installed and up to date. Would you like to launch the game now?") - if not should_launch: + prompt = create_yes_no_popup("Update Mod", + f"New mod version detected. Would you like to update to {latest} now?", + after_mod_update_popup) return - parser = argparse.ArgumentParser(description="Messenger Client Launcher") - parser.add_argument("url", type=str, nargs="?", help="Archipelago Webhost uri to auto connect to.") - args = parser.parse_args(args) - - if not is_windows: - if args.url: - open_file(f"steam://rungameid/764790//{args.url}/") - else: - open_file("steam://rungameid/764790") - else: - os.chdir(game_folder) - if args.url: - subprocess.Popen([MessengerWorld.settings.game_path, str(args.url)]) - else: - subprocess.Popen(MessengerWorld.settings.game_path) - os.chdir(working_directory) + if not args: + prompt = create_yes_no_popup("Launch Game", + "Mod installed and up to date. Would you like to launch the game now?", + launch) diff --git a/worlds/messenger/docs/setup_en.md b/worlds/messenger/docs/setup_en.md index 64b706c2643a..8813e2238174 100644 --- a/worlds/messenger/docs/setup_en.md +++ b/worlds/messenger/docs/setup_en.md @@ -23,21 +23,12 @@ These steps can also be followed to launch the game and check for mod updates af ### Manual Installation 1. Download and install Courier Mod Loader using the instructions on the release page - * [Latest release is currently 0.7.1](https://github.com/Brokemia/Courier/releases) + * [Latest release is currently 0.7.1](https://github.com/Brokemia/Courier/releases) 2. Download and install the randomizer mod - 1. Download the latest TheMessengerRandomizerAP.zip from -[The Messenger Randomizer Mod AP releases page](https://github.com/alwaysintreble/TheMessengerRandomizerModAP/releases) - 2. Extract the zip file to `TheMessenger/Mods/` of your game's install location - * You cannot have both the non-AP randomizer and the AP randomizer installed at the same time - 3. Optionally, Backup your save game - * On Windows - 1. Press `Windows Key + R` to open run - 2. Type `%appdata%` to access AppData - 3. Navigate to `AppData/locallow/SabotageStudios/The Messenger` - 4. Rename `SaveGame.txt` to any name of your choice - * On Linux - 1. Navigate to `steamapps/compatdata/764790/pfx/drive_c/users/steamuser/AppData/LocalLow/Sabotage Studio/The Messenger` - 2. Rename `SaveGame.txt` to any name of your choice + 1. Download the latest TheMessengerRandomizerAP.zip from + [The Messenger Randomizer Mod AP releases page](https://github.com/alwaysintreble/TheMessengerRandomizerModAP/releases) + 2. Extract the zip file to `TheMessenger/Mods/` of your game's install location + * You cannot have both the non-AP randomizer and the AP randomizer installed at the same time ## Joining a MultiWorld Game @@ -57,15 +48,15 @@ These steps can also be followed to launch the game and check for mod updates af 1. Launch the game 2. Navigate to `Options > Archipelago Options` 3. Enter connection info using the relevant option buttons - * **The game is limited to alphanumerical characters, `.`, and `-`.** - * This defaults to `archipelago.gg` and does not need to be manually changed if connecting to a game hosted on the - website. - * If using a name that cannot be entered in the in game menus, there is a config file (APConfig.toml) in the game - directory. When using this, all connection information must be entered in the file. + * **The game is limited to alphanumerical characters, `.`, and `-`.** + * This defaults to `archipelago.gg` and does not need to be manually changed if connecting to a game hosted on the + website. + * If using a name that cannot be entered in the in game menus, there is a config file (APConfig.toml) in the game + directory. When using this, all connection information must be entered in the file. 4. Select the `Connect to Archipelago` button 5. Navigate to save file selection 6. Start a new game - * If you're already connected, deleting an existing save will not disconnect you and is completely safe. + * If you're already connected, deleting an existing save will not disconnect you and is completely safe. ## Continuing a MultiWorld Game diff --git a/worlds/messenger/options.py b/worlds/messenger/options.py index 6b04118893b1..5010f40b4bfa 100644 --- a/worlds/messenger/options.py +++ b/worlds/messenger/options.py @@ -2,8 +2,11 @@ from schema import And, Optional, Or, Schema -from Options import Choice, DeathLinkMixin, DefaultOnToggle, ItemsAccessibility, OptionDict, PerGameCommonOptions, \ - PlandoConnections, Range, StartInventoryPool, Toggle +from Options import ( + Choice, DeathLinkMixin, DefaultOnToggle, ItemsAccessibility, OptionDict, OptionGroup, + PerGameCommonOptions, + PlandoConnections, Range, StartInventoryPool, Toggle, +) from . import RANDOMIZED_CONNECTIONS from .portals import CHECKPOINTS, PORTALS, SHOP_POINTS @@ -48,8 +51,10 @@ class Logic(Choice): """ The level of logic to use when determining what locations in your world are accessible. - Normal: Can require damage boosts, but otherwise approachable for someone who has beaten the game. - Hard: Expects more knowledge and tighter execution. Has leashing, normal clips and much tighter d-boosting in logic. + **Normal:** Can require damage boosts, but otherwise approachable for someone who has beaten the game. + + **Hard:** Expects more knowledge and tighter execution. + Has leashing, normal clips and much tighter d-boosting in logic. """ display_name = "Logic Level" option_normal = 0 @@ -76,7 +81,10 @@ class EarlyMed(Toggle): class AvailablePortals(Range): - """Number of portals that are available from the start. Autumn Hills, Howling Grotto, and Glacial Peak are always available. If portal outputs are not randomized, Searing Crags will also be available.""" + """ + Number of portals that are available from the start. Autumn Hills, Howling Grotto, and Glacial Peak are always + available. If portal outputs are not randomized, Searing Crags will also be available. + """ display_name = "Available Starting Portals" range_start = 3 range_end = 6 @@ -89,10 +97,14 @@ class ShufflePortals(Choice): Entering a portal from its vanilla area will always lead to HQ, and will unlock it if relevant. Supports plando. - None: Portals will take you where they're supposed to. - Shops: Portals can lead to any area except Music Box and Elemental Skylands, with each portal output guaranteed to not overlap with another portal's. Will only put you at a portal or a shop. - Checkpoints: Like Shops except checkpoints without shops are also valid drop points. - Anywhere: Like Checkpoints except it's possible for multiple portals to output to the same map. + **None:** Portals will take you where they're supposed to. + + **Shops:** Portals can lead to any area except Music Box and Elemental Skylands, with each portal output guaranteed + to not overlap with another portal's. Will only put you at a portal or a shop. + + **Checkpoints:** Like Shops except checkpoints without shops are also valid drop points. + + **Anywhere:** Like Checkpoints except it's possible for multiple portals to output to the same map. """ display_name = "Shuffle Portal Outputs" option_none = 0 @@ -107,9 +119,11 @@ class ShuffleTransitions(Choice): Whether the transitions between the levels should be randomized. Supports plando. - None: Level transitions lead where they should. - Coupled: Returning through a transition will take you from whence you came. - Decoupled: Any level transition can take you to any other level transition. + **None:** Level transitions lead where they should. + + **Coupled:** Returning through a transition will take you from whence you came. + + **Decoupled:** Any level transition can take you to any other level transition. """ display_name = "Shuffle Level Transitions" option_none = 0 @@ -119,7 +133,10 @@ class ShuffleTransitions(Choice): class Goal(Choice): - """Requirement to finish the game. To win with the power seal hunt goal, you must enter the Music Box through the shop chest.""" + """ + Requirement to finish the game. + To win with the power seal hunt goal, you must enter the Music Box through the shop chest. + """ display_name = "Goal" option_open_music_box = 0 option_power_seal_hunt = 1 @@ -132,7 +149,8 @@ class MusicBox(DefaultOnToggle): class NotesNeeded(Range): """ - How many notes need to be found in order to access the Music Box. 6 are always needed to enter, so this places the others in your start inventory. + How many notes need to be found in order to access the Music Box. + 6 are always needed to enter, so this places the others in your start inventory. """ display_name = "Notes Needed" range_start = 1 @@ -240,3 +258,35 @@ class MessengerOptions(DeathLinkMixin, PerGameCommonOptions): shop_price_plan: PlannedShopPrices portal_plando: PortalPlando plando_connections: TransitionPlando + + +option_groups = [ + OptionGroup( + "Difficulty", + [ + EarlyMed, + Logic, + LimitedMovement, + ], + ), + OptionGroup( + "Goal", + [ + Goal, + MusicBox, + NotesNeeded, + AmountSeals, + RequiredSeals, + ], + ), + OptionGroup( + "Entrances", + [ + AvailablePortals, + ShufflePortals, + ShuffleTransitions, + PortalPlando, + TransitionPlando, + ], + ), +] diff --git a/worlds/messenger/portals.py b/worlds/messenger/portals.py index 704285896ccf..c04fc696e982 100644 --- a/worlds/messenger/portals.py +++ b/worlds/messenger/portals.py @@ -292,12 +292,10 @@ def disconnect_portals(world: "MessengerWorld") -> None: def validate_portals(world: "MessengerWorld") -> bool: - if world.options.shuffle_transitions: - return True - new_state = CollectionState(world.multiworld) + new_state = CollectionState(world.multiworld, True) new_state.update_reachable_regions(world.player) reachable_locs = 0 - for loc in world.multiworld.get_locations(world.player): + for loc in world.get_locations(): reachable_locs += loc.can_reach(new_state) if reachable_locs > 5: return True diff --git a/worlds/messenger/subclasses.py b/worlds/messenger/subclasses.py index 0138a3f07428..2e438fdbfdc7 100644 --- a/worlds/messenger/subclasses.py +++ b/worlds/messenger/subclasses.py @@ -10,25 +10,8 @@ from . import MessengerWorld -class MessengerEntrance(Entrance): - world: "MessengerWorld | None" = None - - def can_connect_to(self, other: Entrance, dead_end: bool, state: "ERPlacementState") -> bool: - can_connect = super().can_connect_to(other, dead_end, state) - world: MessengerWorld = getattr(self, "world", None) - if not world or world.reachable_locs or not can_connect: - return can_connect - empty_state = CollectionState(world.multiworld, True) - self.connected_region = other.connected_region - empty_state.update_reachable_regions(world.player) - world.reachable_locs = any(loc.can_reach(empty_state) and not loc.is_event for loc in world.get_locations()) - self.connected_region = None - return world.reachable_locs and (not state.coupled or self.name != other.name) - - class MessengerRegion(Region): parent: str | None - entrance_type = MessengerEntrance def __init__(self, name: str, world: "MessengerWorld", parent: str | None = None) -> None: super().__init__(name, world.player, world.multiworld) diff --git a/worlds/messenger/transitions.py b/worlds/messenger/transitions.py index 53cfd836d5ce..c0ae64c5489e 100644 --- a/worlds/messenger/transitions.py +++ b/worlds/messenger/transitions.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from BaseClasses import Region +from BaseClasses import Entrance, Region from entrance_rando import EntranceType, randomize_entrances from .connections import RANDOMIZED_CONNECTIONS, TRANSITIONS from .options import ShuffleTransitions, TransitionPlando @@ -9,6 +9,33 @@ from . import MessengerWorld +def disconnect_entrances(world: "MessengerWorld") -> None: + def disconnect_entrance() -> None: + child = entrance.connected_region.name + child_region = entrance.connected_region + child_region.entrances.remove(entrance) + entrance.connected_region = None + + er_type = EntranceType.ONE_WAY if child == "Glacial Peak - Left" else \ + EntranceType.TWO_WAY if child in RANDOMIZED_CONNECTIONS else EntranceType.ONE_WAY + if er_type == EntranceType.TWO_WAY: + mock_entrance = entrance.parent_region.create_er_target(entrance.name) + else: + mock_entrance = child_region.create_er_target(child) + + entrance.randomization_type = er_type + mock_entrance.randomization_type = er_type + + + for parent, child in RANDOMIZED_CONNECTIONS.items(): + if child == "Corrupted Future": + entrance = world.get_entrance("Artificer's Portal") + elif child == "Tower of Time - Left": + entrance = world.get_entrance("Artificer's Challenge") + else: + entrance = world.get_entrance(f"{parent} -> {child}") + disconnect_entrance() + def connect_plando(world: "MessengerWorld", plando_connections: TransitionPlando) -> None: def remove_dangling_exit(region: Region) -> None: # find the disconnected exit and remove references to it @@ -59,32 +86,6 @@ def remove_dangling_entrance(region: Region) -> None: def shuffle_transitions(world: "MessengerWorld") -> None: coupled = world.options.shuffle_transitions == ShuffleTransitions.option_coupled - def disconnect_entrance() -> None: - child_region.entrances.remove(entrance) - entrance.connected_region = None - - er_type = EntranceType.ONE_WAY if child == "Glacial Peak - Left" else \ - EntranceType.TWO_WAY if child in RANDOMIZED_CONNECTIONS else EntranceType.ONE_WAY - if er_type == EntranceType.TWO_WAY: - mock_entrance = parent_region.create_er_target(entrance.name) - else: - mock_entrance = child_region.create_er_target(child) - - entrance.randomization_type = er_type - mock_entrance.randomization_type = er_type - - for parent, child in RANDOMIZED_CONNECTIONS.items(): - if child == "Corrupted Future": - entrance = world.get_entrance("Artificer's Portal") - elif child == "Tower of Time - Left": - entrance = world.get_entrance("Artificer's Challenge") - else: - entrance = world.get_entrance(f"{parent} -> {child}") - parent_region = entrance.parent_region - child_region = entrance.connected_region - entrance.world = world - disconnect_entrance() - plando = world.options.plando_connections if plando: connect_plando(world, plando) diff --git a/worlds/minecraft/Constants.py b/worlds/minecraft/Constants.py deleted file mode 100644 index 1f7b6fa6acef..000000000000 --- a/worlds/minecraft/Constants.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import json -import pkgutil - -def load_data_file(*args) -> dict: - fname = "/".join(["data", *args]) - return json.loads(pkgutil.get_data(__name__, fname).decode()) - -# For historical reasons, these values are different. -# They remain different to ensure datapackage consistency. -# Do not separate other games' location and item IDs like this. -item_id_offset: int = 45000 -location_id_offset: int = 42000 - -item_info = load_data_file("items.json") -item_name_to_id = {name: item_id_offset + index \ - for index, name in enumerate(item_info["all_items"])} -item_name_to_id["Bee Trap"] = item_id_offset + 100 # historical reasons - -location_info = load_data_file("locations.json") -location_name_to_id = {name: location_id_offset + index \ - for index, name in enumerate(location_info["all_locations"])} - -exclusion_info = load_data_file("excluded_locations.json") - -region_info = load_data_file("regions.json") diff --git a/worlds/minecraft/ItemPool.py b/worlds/minecraft/ItemPool.py deleted file mode 100644 index 19bb70ed6402..000000000000 --- a/worlds/minecraft/ItemPool.py +++ /dev/null @@ -1,55 +0,0 @@ -from math import ceil -from typing import List - -from BaseClasses import Item - -from . import Constants -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import MinecraftWorld - - -def get_junk_item_names(rand, k: int) -> str: - junk_weights = Constants.item_info["junk_weights"] - junk = rand.choices( - list(junk_weights.keys()), - weights=list(junk_weights.values()), - k=k) - return junk - -def build_item_pool(world: "MinecraftWorld") -> List[Item]: - multiworld = world.multiworld - player = world.player - - itempool = [] - total_location_count = len(multiworld.get_unfilled_locations(player)) - - required_pool = Constants.item_info["required_pool"] - - # Add required progression items - for item_name, num in required_pool.items(): - itempool += [world.create_item(item_name) for _ in range(num)] - - # Add structure compasses - if world.options.structure_compasses: - compasses = [name for name in world.item_name_to_id if "Structure Compass" in name] - for item_name in compasses: - itempool.append(world.create_item(item_name)) - - # Dragon egg shards - if world.options.egg_shards_required > 0: - num = world.options.egg_shards_available - itempool += [world.create_item("Dragon Egg Shard") for _ in range(num)] - - # Bee traps - bee_trap_percentage = world.options.bee_traps * 0.01 - if bee_trap_percentage > 0: - bee_trap_qty = ceil(bee_trap_percentage * (total_location_count - len(itempool))) - itempool += [world.create_item("Bee Trap") for _ in range(bee_trap_qty)] - - # Fill remaining itempool with randomly generated junk - junk = get_junk_item_names(world.random, total_location_count - len(itempool)) - itempool += [world.create_item(name) for name in junk] - - return itempool diff --git a/worlds/minecraft/Options.py b/worlds/minecraft/Options.py deleted file mode 100644 index 7d1377233e4c..000000000000 --- a/worlds/minecraft/Options.py +++ /dev/null @@ -1,143 +0,0 @@ -from Options import Choice, Toggle, DefaultOnToggle, Range, OptionList, DeathLink, PlandoConnections, \ - PerGameCommonOptions -from .Constants import region_info -from dataclasses import dataclass - - -class AdvancementGoal(Range): - """Number of advancements required to spawn bosses.""" - display_name = "Advancement Goal" - range_start = 0 - range_end = 114 - default = 40 - - -class EggShardsRequired(Range): - """Number of dragon egg shards to collect to spawn bosses.""" - display_name = "Egg Shards Required" - range_start = 0 - range_end = 50 - default = 0 - - -class EggShardsAvailable(Range): - """Number of dragon egg shards available to collect.""" - display_name = "Egg Shards Available" - range_start = 0 - range_end = 50 - default = 0 - - -class BossGoal(Choice): - """Bosses which must be defeated to finish the game.""" - display_name = "Required Bosses" - option_none = 0 - option_ender_dragon = 1 - option_wither = 2 - option_both = 3 - default = 1 - - @property - def dragon(self): - return self.value % 2 == 1 - - @property - def wither(self): - return self.value > 1 - - -class ShuffleStructures(DefaultOnToggle): - """Enables shuffling of villages, outposts, fortresses, bastions, and end cities.""" - display_name = "Shuffle Structures" - - -class StructureCompasses(DefaultOnToggle): - """Adds structure compasses to the item pool, which point to the nearest indicated structure.""" - display_name = "Structure Compasses" - - -class BeeTraps(Range): - """Replaces a percentage of junk items with bee traps, which spawn multiple angered bees around every player when - received.""" - display_name = "Bee Trap Percentage" - range_start = 0 - range_end = 100 - default = 0 - - -class CombatDifficulty(Choice): - """Modifies the level of items logically required for exploring dangerous areas and fighting bosses.""" - display_name = "Combat Difficulty" - option_easy = 0 - option_normal = 1 - option_hard = 2 - default = 1 - - -class HardAdvancements(Toggle): - """Enables certain RNG-reliant or tedious advancements.""" - display_name = "Include Hard Advancements" - - -class UnreasonableAdvancements(Toggle): - """Enables the extremely difficult advancements "How Did We Get Here?" and "Adventuring Time.\"""" - display_name = "Include Unreasonable Advancements" - - -class PostgameAdvancements(Toggle): - """Enables advancements that require spawning and defeating the required bosses.""" - display_name = "Include Postgame Advancements" - - -class SendDefeatedMobs(Toggle): - """Send killed mobs to other Minecraft worlds which have this option enabled.""" - display_name = "Send Defeated Mobs" - - -class StartingItems(OptionList): - """Start with these items. Each entry should be of this format: {item: "item_name", amount: #} - `item` can include components, and should be in an identical format to a `/give` command with - `"` escaped for json reasons. - - `amount` is optional and will default to 1 if omitted. - - example: - ``` - starting_items: [ - { "item": "minecraft:stick[minecraft:custom_name=\"{'text':'pointy stick'}\"]" }, - { "item": "minecraft:arrow[minecraft:rarity=epic]", amount: 64 } - ] - ``` - """ - display_name = "Starting Items" - - -class MCPlandoConnections(PlandoConnections): - entrances = set(connection[0] for connection in region_info["default_connections"]) - exits = set(connection[1] for connection in region_info["default_connections"]) - - @classmethod - def can_connect(cls, entrance, exit): - if exit in region_info["illegal_connections"] and entrance in region_info["illegal_connections"][exit]: - return False - return True - - -@dataclass -class MinecraftOptions(PerGameCommonOptions): - plando_connections: MCPlandoConnections - advancement_goal: AdvancementGoal - egg_shards_required: EggShardsRequired - egg_shards_available: EggShardsAvailable - required_bosses: BossGoal - shuffle_structures: ShuffleStructures - structure_compasses: StructureCompasses - - combat_difficulty: CombatDifficulty - include_hard_advancements: HardAdvancements - include_unreasonable_advancements: UnreasonableAdvancements - include_postgame_advancements: PostgameAdvancements - bee_traps: BeeTraps - send_defeated_mobs: SendDefeatedMobs - death_link: DeathLink - starting_items: StartingItems diff --git a/worlds/minecraft/Rules.py b/worlds/minecraft/Rules.py deleted file mode 100644 index 9a7be09a4a84..000000000000 --- a/worlds/minecraft/Rules.py +++ /dev/null @@ -1,508 +0,0 @@ -from BaseClasses import CollectionState -from worlds.generic.Rules import exclusion_rules - -from . import Constants -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import MinecraftWorld - - -# Helper functions -# moved from logicmixin - -def has_iron_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player) and state.has('Progressive Resource Crafting', player) - - -def has_copper_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player) and state.has('Progressive Resource Crafting', player) - - -def has_gold_ingots(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.has('Progressive Resource Crafting', player) - and ( - state.has('Progressive Tools', player, 2) - or state.can_reach_region('The Nether', player) - ) - ) - - -def has_diamond_pickaxe(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Progressive Tools', player, 3) and has_iron_ingots(world, state, player) - - -def craft_crossbow(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Archery', player) and has_iron_ingots(world, state, player) - - -def has_bottle(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Bottles', player) and state.has('Progressive Resource Crafting', player) - - -def has_spyglass(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (has_copper_ingots(world, state, player) - and state.has('Spyglass', player) - and can_adventure(world, state, player) - ) - - -def can_enchant(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Enchanting', player) and has_diamond_pickaxe(world, state, player) # mine obsidian and lapis - - -def can_use_anvil(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.has('Enchanting', player) - and state.has('Progressive Resource Crafting', player,2) - and has_iron_ingots(world, state, player) - ) - - -def fortress_loot(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: # saddles, blaze rods, wither skulls - return state.can_reach_region('Nether Fortress', player) and basic_combat(world, state, player) - - -def can_brew_potions(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Blaze Rods', player) and state.has('Brewing', player) and has_bottle(world, state, player) - - -def can_piglin_trade(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (has_gold_ingots(world, state, player) - and ( - state.can_reach_region('The Nether', player) - or state.can_reach_region('Bastion Remnant', player) - )) - - -def overworld_villager(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - village_region = state.multiworld.get_region('Village', player).entrances[0].parent_region.name - if village_region == 'The Nether': # 2 options: cure zombie villager or build portal in village - return (state.can_reach_location('Zombie Doctor', player) - or ( - has_diamond_pickaxe(world, state, player) - and state.can_reach_region('Village', player) - )) - elif village_region == 'The End': - return state.can_reach_location('Zombie Doctor', player) - return state.can_reach_region('Village', player) - - -def enter_stronghold(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return state.has('Blaze Rods', player) and state.has('Brewing', player) and state.has('3 Ender Pearls', player) - - -# Difficulty-dependent functions -def combat_difficulty(world: "MinecraftWorld", state: CollectionState, player: int) -> str: - return world.options.combat_difficulty.current_key - - -def can_adventure(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - death_link_check = not world.options.death_link or state.has('Bed', player) - if combat_difficulty(world, state, player) == 'easy': - return state.has('Progressive Weapons', player, 2) and has_iron_ingots(world, state, player) and death_link_check - elif combat_difficulty(world, state, player) == 'hard': - return True - return (state.has('Progressive Weapons', player) and death_link_check and - (state.has('Progressive Resource Crafting', player) or state.has('Campfire', player))) - - -def basic_combat(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - if combat_difficulty(world, state, player) == 'easy': - return (state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - and state.has('Shield', player) - and has_iron_ingots(world, state, player) - ) - elif combat_difficulty(world, state, player) == 'hard': - return True - return (state.has('Progressive Weapons', player) - and ( - state.has('Progressive Armor', player) - or state.has('Shield', player) - ) - and has_iron_ingots(world, state, player) - ) - - -def complete_raid(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - reach_regions = (state.can_reach_region('Village', player) - and state.can_reach_region('Pillager Outpost', player)) - if combat_difficulty(world, state, player) == 'easy': - return (reach_regions - and state.has('Progressive Weapons', player, 3) - and state.has('Progressive Armor', player, 2) - and state.has('Shield', player) - and state.has('Archery', player) - and state.has('Progressive Tools', player, 2) - and has_iron_ingots(world, state, player) - ) - elif combat_difficulty(world, state, player) == 'hard': # might be too hard? - return (reach_regions - and state.has('Progressive Weapons', player, 2) - and has_iron_ingots(world, state, player) - and ( - state.has('Progressive Armor', player) - or state.has('Shield', player) - ) - ) - return (reach_regions - and state.has('Progressive Weapons', player, 2) - and has_iron_ingots(world, state, player) - and state.has('Progressive Armor', player) - and state.has('Shield', player) - ) - - -def can_kill_wither(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - normal_kill = (state.has("Progressive Weapons", player, 3) - and state.has("Progressive Armor", player, 2) - and can_brew_potions(world, state, player) - and can_enchant(world, state, player) - ) - if combat_difficulty(world, state, player) == 'easy': - return (fortress_loot(world, state, player) - and normal_kill - and state.has('Archery', player) - ) - elif combat_difficulty(world, state, player) == 'hard': # cheese kill using bedrock ceilings - return (fortress_loot(world, state, player) - and ( - normal_kill - or state.can_reach_region('The Nether', player) - or state.can_reach_region('The End', player) - ) - ) - - return fortress_loot(world, state, player) and normal_kill - - -def can_respawn_ender_dragon(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - return (state.can_reach_region('The Nether', player) - and state.can_reach_region('The End', player) - and state.has('Progressive Resource Crafting', player) # smelt sand into glass - ) - - -def can_kill_ender_dragon(world: "MinecraftWorld", state: CollectionState, player: int) -> bool: - if combat_difficulty(world, state, player) == 'easy': - return (state.has("Progressive Weapons", player, 3) - and state.has("Progressive Armor", player, 2) - and state.has('Archery', player) - and can_brew_potions(world, state, player) - and can_enchant(world, state, player) - ) - if combat_difficulty(world, state, player) == 'hard': - return ( - ( - state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - ) or ( - state.has('Progressive Weapons', player, 1) - and state.has('Bed', player) # who needs armor when you can respawn right outside the chamber - ) - ) - return (state.has('Progressive Weapons', player, 2) - and state.has('Progressive Armor', player) - and state.has('Archery', player) - ) - - -def has_structure_compass(world: "MinecraftWorld", state: CollectionState, entrance_name: str, player: int) -> bool: - if not world.options.structure_compasses: - return True - return state.has(f"Structure Compass ({state.multiworld.get_entrance(entrance_name, player).connected_region.name})", player) - - -def get_rules_lookup(world, player: int): - rules_lookup = { - "entrances": { - "Nether Portal": lambda state: state.has('Flint and Steel', player) - and ( - state.has('Bucket', player) - or state.has('Progressive Tools', player, 3) - ) - and has_iron_ingots(world, state, player), - "End Portal": lambda state: enter_stronghold(world, state, player) - and state.has('3 Ender Pearls', player, 4), - "Overworld Structure 1": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Overworld Structure 1", player), - "Overworld Structure 2": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Overworld Structure 2", player), - "Nether Structure 1": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Nether Structure 1", player), - "Nether Structure 2": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "Nether Structure 2", player), - "The End Structure": lambda state: can_adventure(world, state, player) - and has_structure_compass(world, state, "The End Structure", player), - }, - "locations": { - "Ender Dragon": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Wither": lambda state: can_kill_wither(world, state, player), - "Blaze Rods": lambda state: fortress_loot(world, state, player), - "Who is Cutting Onions?": lambda state: can_piglin_trade(world, state, player), - "Oh Shiny": lambda state: can_piglin_trade(world, state, player), - "Suit Up": lambda state: state.has("Progressive Armor", player) - and has_iron_ingots(world, state, player), - "Very Very Frightening": lambda state: state.has("Channeling Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - and overworld_villager(world, state, player), - "Hot Stuff": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player), - "Free the End": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "A Furious Cocktail": lambda state: (can_brew_potions(world, state, player) - and state.has("Fishing Rod", player) # Water Breathing - and state.can_reach_region("The Nether", player) # Regeneration, Fire Resistance, gold nuggets - and state.can_reach_region("Village", player) # Night Vision, Invisibility - and state.can_reach_location("Bring Home the Beacon", player)), - # Resistance - "Bring Home the Beacon": lambda state: can_kill_wither(world, state, player) - and has_diamond_pickaxe(world, state, player) - and state.has("Progressive Resource Crafting", player, 2), - "Not Today, Thank You": lambda state: state.has("Shield", player) - and has_iron_ingots(world, state, player), - "Isn't It Iron Pick": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Local Brewery": lambda state: can_brew_potions(world, state, player), - "The Next Generation": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Fishy Business": lambda state: state.has("Fishing Rod", player), - "This Boat Has Legs": lambda state: ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player) - and state.has("Fishing Rod", player), - "Sniper Duel": lambda state: state.has("Archery", player), - "Great View From Up Here": lambda state: basic_combat(world, state, player), - "How Did We Get Here?": lambda state: (can_brew_potions(world, state, player) - and has_gold_ingots(world, state, player) # Absorption - and state.can_reach_region('End City', player) # Levitation - and state.can_reach_region('The Nether', player) # potion ingredients - and state.has("Fishing Rod", player) # Pufferfish, Nautilus Shells; spectral arrows - and state.has("Archery", player) - and state.can_reach_location("Bring Home the Beacon", player) # Haste - and state.can_reach_location("Hero of the Village", player)), # Bad Omen, Hero of the Village - "Bullseye": lambda state: state.has("Archery", player) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Spooky Scary Skeleton": lambda state: basic_combat(world, state, player), - "Two by Two": lambda state: has_iron_ingots(world, state, player) - and state.has("Bucket", player) - and can_adventure(world, state, player), - "Two Birds, One Arrow": lambda state: craft_crossbow(world, state, player) - and can_enchant(world, state, player), - "Who's the Pillager Now?": lambda state: craft_crossbow(world, state, player), - "Getting an Upgrade": lambda state: state.has("Progressive Tools", player), - "Tactical Fishing": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player), - "Zombie Doctor": lambda state: can_brew_potions(world, state, player) - and has_gold_ingots(world, state, player), - "Ice Bucket Challenge": lambda state: has_diamond_pickaxe(world, state, player), - "Into Fire": lambda state: basic_combat(world, state, player), - "War Pigs": lambda state: basic_combat(world, state, player), - "Take Aim": lambda state: state.has("Archery", player), - "Total Beelocation": lambda state: state.has("Silk Touch Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player), - "Arbalistic": lambda state: (craft_crossbow(world, state, player) - and state.has("Piercing IV Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - ), - "The End... Again...": lambda state: can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player), - "Acquire Hardware": lambda state: has_iron_ingots(world, state, player), - "Not Quite \"Nine\" Lives": lambda state: can_piglin_trade(world, state, player) - and state.has("Progressive Resource Crafting", player, 2), - "Cover Me With Diamonds": lambda state: state.has("Progressive Armor", player, 2) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Sky's the Limit": lambda state: basic_combat(world, state, player), - "Hired Help": lambda state: state.has("Progressive Resource Crafting", player, 2) - and has_iron_ingots(world, state, player), - "Sweet Dreams": lambda state: state.has("Bed", player) - or state.can_reach_region('Village', player), - "You Need a Mint": lambda state: can_respawn_ender_dragon(world, state, player) - and has_bottle(world, state, player), - "Monsters Hunted": lambda state: (can_respawn_ender_dragon(world, state, player) - and can_kill_ender_dragon(world, state, player) - and can_kill_wither(world, state, player) - and state.has("Fishing Rod", player)), - "Enchanter": lambda state: can_enchant(world, state, player), - "Voluntary Exile": lambda state: basic_combat(world, state, player), - "Eye Spy": lambda state: enter_stronghold(world, state, player), - "Serious Dedication": lambda state: (can_brew_potions(world, state, player) - and state.has("Bed", player) - and has_diamond_pickaxe(world, state, player) - and has_gold_ingots(world, state, player)), - "Postmortal": lambda state: complete_raid(world, state, player), - "Adventuring Time": lambda state: can_adventure(world, state, player), - "Hero of the Village": lambda state: complete_raid(world, state, player), - "Hidden in the Depths": lambda state: can_brew_potions(world, state, player) - and state.has("Bed", player) - and has_diamond_pickaxe(world, state, player), - "Beaconator": lambda state: (can_kill_wither(world, state, player) - and has_diamond_pickaxe(world, state, player) - and state.has("Progressive Resource Crafting", player, 2)), - "Withering Heights": lambda state: can_kill_wither(world, state, player), - "A Balanced Diet": lambda state: (has_bottle(world, state, player) - and has_gold_ingots(world, state, player) - and state.has("Progressive Resource Crafting", player, 2) - and state.can_reach_region('The End', player)), - # notch apple, chorus fruit - "Subspace Bubble": lambda state: has_diamond_pickaxe(world, state, player), - "Country Lode, Take Me Home": lambda state: state.can_reach_location("Hidden in the Depths", player) - and has_gold_ingots(world, state, player), - "Bee Our Guest": lambda state: state.has("Campfire", player) - and has_bottle(world, state, player), - "Uneasy Alliance": lambda state: has_diamond_pickaxe(world, state, player) - and state.has('Fishing Rod', player), - "Diamonds!": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "A Throwaway Joke": lambda state: can_adventure(world, state, player), - "Sticky Situation": lambda state: state.has("Campfire", player) - and has_bottle(world, state, player), - "Ol' Betsy": lambda state: craft_crossbow(world, state, player), - "Cover Me in Debris": lambda state: state.has("Progressive Armor", player, 2) - and state.has("8 Netherite Scrap", player, 2) - and state.has("Progressive Resource Crafting", player) - and has_diamond_pickaxe(world, state, player) - and has_iron_ingots(world, state, player) - and can_brew_potions(world, state, player) - and state.has("Bed", player), - "Hot Topic": lambda state: state.has("Progressive Resource Crafting", player), - "The Lie": lambda state: has_iron_ingots(world, state, player) - and state.has("Bucket", player), - "On a Rail": lambda state: has_iron_ingots(world, state, player) - and state.has('Progressive Tools', player, 2), - "When Pigs Fly": lambda state: ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player) - and state.has("Fishing Rod", player) - and can_adventure(world, state, player), - "Overkill": lambda state: can_brew_potions(world, state, player) - and ( - state.has("Progressive Weapons", player) - or state.can_reach_region('The Nether', player) - ), - "Librarian": lambda state: state.has("Enchanting", player), - "Overpowered": lambda state: has_iron_ingots(world, state, player) - and state.has('Progressive Tools', player, 2) - and basic_combat(world, state, player), - "Wax On": lambda state: has_copper_ingots(world, state, player) - and state.has('Campfire', player) - and state.has('Progressive Resource Crafting', player, 2), - "Wax Off": lambda state: has_copper_ingots(world, state, player) - and state.has('Campfire', player) - and state.has('Progressive Resource Crafting', player, 2), - "The Cutest Predator": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "The Healing Power of Friendship": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "Is It a Bird?": lambda state: has_spyglass(world, state, player) - and can_adventure(world, state, player), - "Is It a Balloon?": lambda state: has_spyglass(world, state, player), - "Is It a Plane?": lambda state: has_spyglass(world, state, player) - and can_respawn_ender_dragon(world, state, player), - "Surge Protector": lambda state: state.has("Channeling Book", player) - and can_use_anvil(world, state, player) - and can_enchant(world, state, player) - and overworld_villager(world, state, player), - "Light as a Rabbit": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has('Bucket', player), - "Glow and Behold!": lambda state: can_adventure(world, state, player), - "Whatever Floats Your Goat!": lambda state: can_adventure(world, state, player), - "Caves & Cliffs": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and state.has('Progressive Tools', player, 2), - "Feels like home": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and state.has('Fishing Rod', player) - and ( - fortress_loot(world, state, player) - or complete_raid(world, state, player) - ) - and state.has("Saddle", player), - "Sound of Music": lambda state: state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player) - and basic_combat(world, state, player), - "Star Trader": lambda state: has_iron_ingots(world, state, player) - and state.has('Bucket', player) - and ( - state.can_reach_region("The Nether", player) # soul sand in nether - or state.can_reach_region("Nether Fortress", player) # soul sand in fortress if not in nether for water elevator - or can_piglin_trade(world, state, player) # piglins give soul sand - ) - and overworld_villager(world, state, player), - "Birthday Song": lambda state: state.can_reach_location("The Lie", player) - and state.has("Progressive Tools", player, 2) - and has_iron_ingots(world, state, player), - "Bukkit Bukkit": lambda state: state.has("Bucket", player) - and has_iron_ingots(world, state, player) - and can_adventure(world, state, player), - "It Spreads": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has("Progressive Tools", player, 2), - "Sneak 100": lambda state: can_adventure(world, state, player) - and has_iron_ingots(world, state, player) - and state.has("Progressive Tools", player, 2), - "When the Squad Hops into Town": lambda state: can_adventure(world, state, player) - and state.has("Lead", player), - "With Our Powers Combined!": lambda state: can_adventure(world, state, player) - and state.has("Lead", player), - } - } - return rules_lookup - - -def set_rules(self: "MinecraftWorld") -> None: - multiworld = self.multiworld - player = self.player - - rules_lookup = get_rules_lookup(self, player) - - # Set entrance rules - for entrance_name, rule in rules_lookup["entrances"].items(): - multiworld.get_entrance(entrance_name, player).access_rule = rule - - # Set location rules - for location_name, rule in rules_lookup["locations"].items(): - multiworld.get_location(location_name, player).access_rule = rule - - # Set rules surrounding completion - bosses = self.options.required_bosses - postgame_advancements = set() - if bosses.dragon: - postgame_advancements.update(Constants.exclusion_info["ender_dragon"]) - if bosses.wither: - postgame_advancements.update(Constants.exclusion_info["wither"]) - - def location_count(state: CollectionState) -> int: - return len([location for location in multiworld.get_locations(player) if - location.address is not None and - location.can_reach(state)]) - - def defeated_bosses(state: CollectionState) -> bool: - return ((not bosses.dragon or state.has("Ender Dragon", player)) - and (not bosses.wither or state.has("Wither", player))) - - egg_shards = min(self.options.egg_shards_required.value, self.options.egg_shards_available.value) - completion_requirements = lambda state: (location_count(state) >= self.options.advancement_goal - and state.has("Dragon Egg Shard", player, egg_shards)) - multiworld.completion_condition[player] = lambda state: completion_requirements(state) and defeated_bosses(state) - - # Set exclusions on hard/unreasonable/postgame - excluded_advancements = set() - if not self.options.include_hard_advancements: - excluded_advancements.update(Constants.exclusion_info["hard"]) - if not self.options.include_unreasonable_advancements: - excluded_advancements.update(Constants.exclusion_info["unreasonable"]) - if not self.options.include_postgame_advancements: - excluded_advancements.update(postgame_advancements) - exclusion_rules(multiworld, player, excluded_advancements) diff --git a/worlds/minecraft/Structures.py b/worlds/minecraft/Structures.py deleted file mode 100644 index d4f62f3498e9..000000000000 --- a/worlds/minecraft/Structures.py +++ /dev/null @@ -1,59 +0,0 @@ -from . import Constants -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from . import MinecraftWorld - - -def shuffle_structures(self: "MinecraftWorld") -> None: - multiworld = self.multiworld - player = self.player - - default_connections = Constants.region_info["default_connections"] - illegal_connections = Constants.region_info["illegal_connections"] - - # Get all unpaired exits and all regions without entrances (except the Menu) - # This function is destructive on these lists. - exits = [exit.name for r in multiworld.regions if r.player == player for exit in r.exits if exit.connected_region is None] - structs = [r.name for r in multiworld.regions if r.player == player and r.entrances == [] and r.name != 'Menu'] - exits_spoiler = exits[:] # copy the original order for the spoiler log - - pairs = {} - - def set_pair(exit, struct): - if (exit in exits) and (struct in structs) and (exit not in illegal_connections.get(struct, [])): - pairs[exit] = struct - exits.remove(exit) - structs.remove(struct) - else: - raise Exception(f"Invalid connection: {exit} => {struct} for player {player} ({multiworld.player_name[player]})") - - # Connect plando structures first - if self.options.plando_connections: - for conn in self.options.plando_connections: - set_pair(conn.entrance, conn.exit) - - # The algorithm tries to place the most restrictive structures first. This algorithm always works on the - # relatively small set of restrictions here, but does not work on all possible inputs with valid configurations. - if self.options.shuffle_structures: - structs.sort(reverse=True, key=lambda s: len(illegal_connections.get(s, []))) - for struct in structs[:]: - try: - exit = self.random.choice([e for e in exits if e not in illegal_connections.get(struct, [])]) - except IndexError: - raise Exception(f"No valid structure placements remaining for player {player} ({self.player_name})") - set_pair(exit, struct) - else: # write remaining default connections - for (exit, struct) in default_connections: - if exit in exits: - set_pair(exit, struct) - - # Make sure we actually paired everything; might fail if plando - try: - assert len(exits) == len(structs) == 0 - except AssertionError: - raise Exception(f"Failed to connect all Minecraft structures for player {player} ({self.player_name})") - - for exit in exits_spoiler: - multiworld.get_entrance(exit, player).connect(multiworld.get_region(pairs[exit], player)) - if self.options.shuffle_structures or self.options.plando_connections: - multiworld.spoiler.set_entrance(exit, pairs[exit], 'entrance', player) diff --git a/worlds/minecraft/__init__.py b/worlds/minecraft/__init__.py deleted file mode 100644 index 75539fcf2ea6..000000000000 --- a/worlds/minecraft/__init__.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import json -import settings -import typing -from base64 import b64encode, b64decode -from typing import Dict, Any - -from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification, Location -from worlds.AutoWorld import World, WebWorld - -from . import Constants -from .Options import MinecraftOptions -from .Structures import shuffle_structures -from .ItemPool import build_item_pool, get_junk_item_names -from .Rules import set_rules - -client_version = 9 - - -class MinecraftSettings(settings.Group): - class ForgeDirectory(settings.OptionalUserFolderPath): - pass - - class ReleaseChannel(str): - """ - release channel, currently "release", or "beta" - any games played on the "beta" channel have a high likelihood of no longer working on the "release" channel. - """ - - forge_directory: ForgeDirectory = ForgeDirectory("Minecraft Forge server") - max_heap_size: str = "2G" - release_channel: ReleaseChannel = ReleaseChannel("release") - - -class MinecraftWebWorld(WebWorld): - theme = "jungle" - bug_report_page = "https://github.com/KonoTyran/Minecraft_AP_Randomizer/issues/new?assignees=&labels=bug&template=bug_report.yaml&title=%5BBug%5D%3A+Brief+Description+of+bug+here" - - setup = Tutorial( - "Multiworld Setup Guide", - "A guide to setting up the Archipelago Minecraft software on your computer. This guide covers" - "single-player, multiworld, and related software.", - "English", - "minecraft_en.md", - "minecraft/en", - ["Kono Tyran"] - ) - - setup_es = Tutorial( - setup.tutorial_name, - setup.description, - "Español", - "minecraft_es.md", - "minecraft/es", - ["Edos"] - ) - - setup_sv = Tutorial( - setup.tutorial_name, - setup.description, - "Swedish", - "minecraft_sv.md", - "minecraft/sv", - ["Albinum"] - ) - - setup_fr = Tutorial( - setup.tutorial_name, - setup.description, - "Français", - "minecraft_fr.md", - "minecraft/fr", - ["TheLynk"] - ) - - tutorials = [setup, setup_es, setup_sv, setup_fr] - - -class MinecraftWorld(World): - """ - Minecraft is a game about creativity. In a world made entirely of cubes, you explore, discover, mine, - craft, and try not to explode. Delve deep into the earth and discover abandoned mines, ancient - structures, and materials to create a portal to another world. Defeat the Ender Dragon, and claim - victory! - """ - game = "Minecraft" - options_dataclass = MinecraftOptions - options: MinecraftOptions - settings: typing.ClassVar[MinecraftSettings] - topology_present = True - web = MinecraftWebWorld() - - item_name_to_id = Constants.item_name_to_id - location_name_to_id = Constants.location_name_to_id - - def _get_mc_data(self) -> Dict[str, Any]: - exits = [connection[0] for connection in Constants.region_info["default_connections"]] - return { - 'world_seed': self.random.getrandbits(32), - 'seed_name': self.multiworld.seed_name, - 'player_name': self.player_name, - 'player_id': self.player, - 'client_version': client_version, - 'structures': {exit: self.multiworld.get_entrance(exit, self.player).connected_region.name for exit in exits}, - 'advancement_goal': self.options.advancement_goal.value, - 'egg_shards_required': min(self.options.egg_shards_required.value, - self.options.egg_shards_available.value), - 'egg_shards_available': self.options.egg_shards_available.value, - 'required_bosses': self.options.required_bosses.current_key, - 'MC35': bool(self.options.send_defeated_mobs.value), - 'death_link': bool(self.options.death_link.value), - 'starting_items': json.dumps(self.options.starting_items.value), - 'race': self.multiworld.is_race, - } - - def create_item(self, name: str) -> Item: - item_class = ItemClassification.filler - if name in Constants.item_info["progression_items"]: - item_class = ItemClassification.progression - elif name in Constants.item_info["useful_items"]: - item_class = ItemClassification.useful - elif name in Constants.item_info["trap_items"]: - item_class = ItemClassification.trap - - return MinecraftItem(name, item_class, self.item_name_to_id.get(name, None), self.player) - - def create_event(self, region_name: str, event_name: str) -> None: - region = self.multiworld.get_region(region_name, self.player) - loc = MinecraftLocation(self.player, event_name, None, region) - loc.place_locked_item(self.create_event_item(event_name)) - region.locations.append(loc) - - def create_event_item(self, name: str) -> Item: - item = self.create_item(name) - item.classification = ItemClassification.progression - return item - - def create_regions(self) -> None: - # Create regions - for region_name, exits in Constants.region_info["regions"]: - r = Region(region_name, self.player, self.multiworld) - for exit_name in exits: - r.exits.append(Entrance(self.player, exit_name, r)) - self.multiworld.regions.append(r) - - # Bind mandatory connections - for entr_name, region_name in Constants.region_info["mandatory_connections"]: - e = self.multiworld.get_entrance(entr_name, self.player) - r = self.multiworld.get_region(region_name, self.player) - e.connect(r) - - # Add locations - for region_name, locations in Constants.location_info["locations_by_region"].items(): - region = self.multiworld.get_region(region_name, self.player) - for loc_name in locations: - loc = MinecraftLocation(self.player, loc_name, - self.location_name_to_id.get(loc_name, None), region) - region.locations.append(loc) - - # Add events - self.create_event("Nether Fortress", "Blaze Rods") - self.create_event("The End", "Ender Dragon") - self.create_event("Nether Fortress", "Wither") - - # Shuffle the connections - shuffle_structures(self) - - def create_items(self) -> None: - self.multiworld.itempool += build_item_pool(self) - - set_rules = set_rules - - def generate_output(self, output_directory: str) -> None: - data = self._get_mc_data() - filename = f"{self.multiworld.get_out_file_name_base(self.player)}.apmc" - with open(os.path.join(output_directory, filename), 'wb') as f: - f.write(b64encode(bytes(json.dumps(data), 'utf-8'))) - - def fill_slot_data(self) -> dict: - return self._get_mc_data() - - def get_filler_item_name(self) -> str: - return get_junk_item_names(self.random, 1)[0] - - -class MinecraftLocation(Location): - game = "Minecraft" - -class MinecraftItem(Item): - game = "Minecraft" - - -def mc_update_output(raw_data, server, port): - data = json.loads(b64decode(raw_data)) - data['server'] = server - data['port'] = port - return b64encode(bytes(json.dumps(data), 'utf-8')) diff --git a/worlds/minecraft/data/excluded_locations.json b/worlds/minecraft/data/excluded_locations.json deleted file mode 100644 index 2f6fbbba6d22..000000000000 --- a/worlds/minecraft/data/excluded_locations.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "hard": [ - "Very Very Frightening", - "A Furious Cocktail", - "Two by Two", - "Two Birds, One Arrow", - "Arbalistic", - "Monsters Hunted", - "Beaconator", - "A Balanced Diet", - "Uneasy Alliance", - "Cover Me in Debris", - "A Complete Catalogue", - "Surge Protector", - "Sound of Music", - "Star Trader", - "When the Squad Hops into Town", - "With Our Powers Combined!" - ], - "unreasonable": [ - "How Did We Get Here?", - "Adventuring Time" - ], - "ender_dragon": [ - "Free the End", - "The Next Generation", - "The End... Again...", - "You Need a Mint", - "Monsters Hunted", - "Is It a Plane?" - ], - "wither": [ - "Withering Heights", - "Bring Home the Beacon", - "Beaconator", - "A Furious Cocktail", - "How Did We Get Here?", - "Monsters Hunted" - ] -} \ No newline at end of file diff --git a/worlds/minecraft/data/items.json b/worlds/minecraft/data/items.json deleted file mode 100644 index 7d35d18aeb01..000000000000 --- a/worlds/minecraft/data/items.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "all_items": [ - "Archery", - "Progressive Resource Crafting", - "Resource Blocks", - "Brewing", - "Enchanting", - "Bucket", - "Flint and Steel", - "Bed", - "Bottles", - "Shield", - "Fishing Rod", - "Campfire", - "Progressive Weapons", - "Progressive Tools", - "Progressive Armor", - "8 Netherite Scrap", - "8 Emeralds", - "4 Emeralds", - "Channeling Book", - "Silk Touch Book", - "Sharpness III Book", - "Piercing IV Book", - "Looting III Book", - "Infinity Book", - "4 Diamond Ore", - "16 Iron Ore", - "500 XP", - "100 XP", - "50 XP", - "3 Ender Pearls", - "4 Lapis Lazuli", - "16 Porkchops", - "8 Gold Ore", - "Rotten Flesh", - "Single Arrow", - "32 Arrows", - "Saddle", - "Structure Compass (Village)", - "Structure Compass (Pillager Outpost)", - "Structure Compass (Nether Fortress)", - "Structure Compass (Bastion Remnant)", - "Structure Compass (End City)", - "Shulker Box", - "Dragon Egg Shard", - "Spyglass", - "Lead", - "Bee Trap" - ], - "progression_items": [ - "Archery", - "Progressive Resource Crafting", - "Resource Blocks", - "Brewing", - "Enchanting", - "Bucket", - "Flint and Steel", - "Bed", - "Bottles", - "Shield", - "Fishing Rod", - "Campfire", - "Progressive Weapons", - "Progressive Tools", - "Progressive Armor", - "8 Netherite Scrap", - "Channeling Book", - "Silk Touch Book", - "Piercing IV Book", - "3 Ender Pearls", - "Saddle", - "Structure Compass (Village)", - "Structure Compass (Pillager Outpost)", - "Structure Compass (Nether Fortress)", - "Structure Compass (Bastion Remnant)", - "Structure Compass (End City)", - "Dragon Egg Shard", - "Spyglass", - "Lead" - ], - "useful_items": [ - "Sharpness III Book", - "Looting III Book", - "Infinity Book" - ], - "trap_items": [ - "Bee Trap" - ], - - "required_pool": { - "Archery": 1, - "Progressive Resource Crafting": 2, - "Brewing": 1, - "Enchanting": 1, - "Bucket": 1, - "Flint and Steel": 1, - "Bed": 1, - "Bottles": 1, - "Shield": 1, - "Fishing Rod": 1, - "Campfire": 1, - "Progressive Weapons": 3, - "Progressive Tools": 3, - "Progressive Armor": 2, - "8 Netherite Scrap": 2, - "Channeling Book": 1, - "Silk Touch Book": 1, - "Sharpness III Book": 1, - "Piercing IV Book": 1, - "Looting III Book": 1, - "Infinity Book": 1, - "3 Ender Pearls": 4, - "Saddle": 1, - "Spyglass": 1, - "Lead": 1 - }, - "junk_weights": { - "4 Emeralds": 2, - "4 Diamond Ore": 1, - "16 Iron Ore": 1, - "50 XP": 4, - "16 Porkchops": 2, - "8 Gold Ore": 1, - "Rotten Flesh": 1, - "32 Arrows": 1 - } -} \ No newline at end of file diff --git a/worlds/minecraft/data/locations.json b/worlds/minecraft/data/locations.json deleted file mode 100644 index 7cd00e58519c..000000000000 --- a/worlds/minecraft/data/locations.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "all_locations": [ - "Who is Cutting Onions?", - "Oh Shiny", - "Suit Up", - "Very Very Frightening", - "Hot Stuff", - "Free the End", - "A Furious Cocktail", - "Best Friends Forever", - "Bring Home the Beacon", - "Not Today, Thank You", - "Isn't It Iron Pick", - "Local Brewery", - "The Next Generation", - "Fishy Business", - "Hot Tourist Destinations", - "This Boat Has Legs", - "Sniper Duel", - "Nether", - "Great View From Up Here", - "How Did We Get Here?", - "Bullseye", - "Spooky Scary Skeleton", - "Two by Two", - "Stone Age", - "Two Birds, One Arrow", - "We Need to Go Deeper", - "Who's the Pillager Now?", - "Getting an Upgrade", - "Tactical Fishing", - "Zombie Doctor", - "The City at the End of the Game", - "Ice Bucket Challenge", - "Remote Getaway", - "Into Fire", - "War Pigs", - "Take Aim", - "Total Beelocation", - "Arbalistic", - "The End... Again...", - "Acquire Hardware", - "Not Quite \"Nine\" Lives", - "Cover Me With Diamonds", - "Sky's the Limit", - "Hired Help", - "Return to Sender", - "Sweet Dreams", - "You Need a Mint", - "Adventure", - "Monsters Hunted", - "Enchanter", - "Voluntary Exile", - "Eye Spy", - "The End", - "Serious Dedication", - "Postmortal", - "Monster Hunter", - "Adventuring Time", - "A Seedy Place", - "Those Were the Days", - "Hero of the Village", - "Hidden in the Depths", - "Beaconator", - "Withering Heights", - "A Balanced Diet", - "Subspace Bubble", - "Husbandry", - "Country Lode, Take Me Home", - "Bee Our Guest", - "What a Deal!", - "Uneasy Alliance", - "Diamonds!", - "A Terrible Fortress", - "A Throwaway Joke", - "Minecraft", - "Sticky Situation", - "Ol' Betsy", - "Cover Me in Debris", - "The End?", - "The Parrots and the Bats", - "A Complete Catalogue", - "Getting Wood", - "Time to Mine!", - "Hot Topic", - "Bake Bread", - "The Lie", - "On a Rail", - "Time to Strike!", - "Cow Tipper", - "When Pigs Fly", - "Overkill", - "Librarian", - "Overpowered", - "Wax On", - "Wax Off", - "The Cutest Predator", - "The Healing Power of Friendship", - "Is It a Bird?", - "Is It a Balloon?", - "Is It a Plane?", - "Surge Protector", - "Light as a Rabbit", - "Glow and Behold!", - "Whatever Floats Your Goat!", - "Caves & Cliffs", - "Feels like home", - "Sound of Music", - "Star Trader", - "Birthday Song", - "Bukkit Bukkit", - "It Spreads", - "Sneak 100", - "When the Squad Hops into Town", - "With Our Powers Combined!", - "You've Got a Friend in Me" - ], - "locations_by_region": { - "Overworld": [ - "Who is Cutting Onions?", - "Oh Shiny", - "Suit Up", - "Very Very Frightening", - "Hot Stuff", - "Best Friends Forever", - "Not Today, Thank You", - "Isn't It Iron Pick", - "Fishy Business", - "Sniper Duel", - "Bullseye", - "Stone Age", - "Two Birds, One Arrow", - "Getting an Upgrade", - "Tactical Fishing", - "Zombie Doctor", - "Ice Bucket Challenge", - "Take Aim", - "Total Beelocation", - "Arbalistic", - "Acquire Hardware", - "Cover Me With Diamonds", - "Hired Help", - "Sweet Dreams", - "Adventure", - "Monsters Hunted", - "Enchanter", - "Eye Spy", - "Monster Hunter", - "Adventuring Time", - "A Seedy Place", - "Husbandry", - "Bee Our Guest", - "Diamonds!", - "A Throwaway Joke", - "Minecraft", - "Sticky Situation", - "Ol' Betsy", - "The Parrots and the Bats", - "Getting Wood", - "Time to Mine!", - "Hot Topic", - "Bake Bread", - "The Lie", - "On a Rail", - "Time to Strike!", - "Cow Tipper", - "When Pigs Fly", - "Librarian", - "Wax On", - "Wax Off", - "The Cutest Predator", - "The Healing Power of Friendship", - "Is It a Bird?", - "Surge Protector", - "Light as a Rabbit", - "Glow and Behold!", - "Whatever Floats Your Goat!", - "Caves & Cliffs", - "Sound of Music", - "Bukkit Bukkit", - "It Spreads", - "Sneak 100", - "When the Squad Hops into Town" - ], - "The Nether": [ - "Hot Tourist Destinations", - "This Boat Has Legs", - "Nether", - "Two by Two", - "We Need to Go Deeper", - "Not Quite \"Nine\" Lives", - "Return to Sender", - "Serious Dedication", - "Hidden in the Depths", - "Subspace Bubble", - "Country Lode, Take Me Home", - "Uneasy Alliance", - "Cover Me in Debris", - "Is It a Balloon?", - "Feels like home", - "With Our Powers Combined!" - ], - "The End": [ - "Free the End", - "The Next Generation", - "Remote Getaway", - "The End... Again...", - "You Need a Mint", - "The End", - "The End?", - "Is It a Plane?" - ], - "Village": [ - "Postmortal", - "Hero of the Village", - "A Balanced Diet", - "What a Deal!", - "A Complete Catalogue", - "Star Trader" - ], - "Nether Fortress": [ - "A Furious Cocktail", - "Bring Home the Beacon", - "Local Brewery", - "How Did We Get Here?", - "Spooky Scary Skeleton", - "Into Fire", - "Beaconator", - "Withering Heights", - "A Terrible Fortress", - "Overkill" - ], - "Pillager Outpost": [ - "Who's the Pillager Now?", - "Voluntary Exile", - "Birthday Song", - "You've Got a Friend in Me" - ], - "Bastion Remnant": [ - "War Pigs", - "Those Were the Days", - "Overpowered" - ], - "End City": [ - "Great View From Up Here", - "The City at the End of the Game", - "Sky's the Limit" - ] - } -} \ No newline at end of file diff --git a/worlds/minecraft/data/regions.json b/worlds/minecraft/data/regions.json deleted file mode 100644 index c9e51e48292e..000000000000 --- a/worlds/minecraft/data/regions.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "regions": [ - ["Menu", ["New World"]], - ["Overworld", ["Nether Portal", "End Portal", "Overworld Structure 1", "Overworld Structure 2"]], - ["The Nether", ["Nether Structure 1", "Nether Structure 2"]], - ["The End", ["The End Structure"]], - ["Village", []], - ["Pillager Outpost", []], - ["Nether Fortress", []], - ["Bastion Remnant", []], - ["End City", []] - ], - "mandatory_connections": [ - ["New World", "Overworld"], - ["Nether Portal", "The Nether"], - ["End Portal", "The End"] - ], - "default_connections": [ - ["Overworld Structure 1", "Village"], - ["Overworld Structure 2", "Pillager Outpost"], - ["Nether Structure 1", "Nether Fortress"], - ["Nether Structure 2", "Bastion Remnant"], - ["The End Structure", "End City"] - ], - "illegal_connections": { - "Nether Fortress": ["The End Structure"] - } -} \ No newline at end of file diff --git a/worlds/minecraft/docs/en_Minecraft.md b/worlds/minecraft/docs/en_Minecraft.md deleted file mode 100644 index 3a69a7f59a22..000000000000 --- a/worlds/minecraft/docs/en_Minecraft.md +++ /dev/null @@ -1,113 +0,0 @@ -# Minecraft - -## Where is the options page? - -The [player options page for this game](../player-options) contains all the options you need to configure and export a -config file. - -## What does randomization do to this game? - -Some recipes are locked from being able to be crafted and shuffled into the item pool. It can also optionally change which -structures appear in each dimension. Crafting recipes are re-learned when they are received from other players as item -checks, and occasionally when completing your own achievements. See below for which recipes are shuffled. - -## What is considered a location check in Minecraft? - -Location checks are completed when the player completes various Minecraft achievements. Opening the advancements menu -in-game by pressing "L" will display outstanding achievements. - -## When the player receives an item, what happens? - -When the player receives an item in Minecraft, it either unlocks crafting recipes or puts items into the player's -inventory directly. - -## What is the victory condition? - -Victory is achieved when the player kills the Ender Dragon, enters the portal in The End, and completes the credits -sequence either by skipping it or watching it play out. - -## Which recipes are locked? - -* Archery - * Bow - * Arrow - * Crossbow -* Brewing - * Blaze Powder - * Brewing Stand -* Enchanting - * Enchanting Table - * Bookshelf -* Bucket -* Flint & Steel -* All Beds -* Bottles -* Shield -* Fishing Rod - * Fishing Rod - * Carrot on a Stick - * Warped Fungus on a Stick -* Campfire - * Campfire - * Soul Campfire -* Spyglass -* Lead -* Progressive Weapons - * Tier I - * Stone Sword - * Stone Axe - * Tier II - * Iron Sword - * Iron Axe - * Tier III - * Diamond Sword - * Diamond Axe -* Progessive Tools - * Tier I - * Stone Pickaxe - * Stone Shovel - * Stone Hoe - * Tier II - * Iron Pickaxe - * Iron Shovel - * Iron Hoe - * Tier III - * Diamond Pickaxe - * Diamond Shovel - * Diamond Hoe - * Netherite Ingot -* Progressive Armor - * Tier I - * Iron Helmet - * Iron Chestplate - * Iron Leggings - * Iron Boots - * Tier II - * Diamond Helmet - * Diamond Chestplate - * Diamond Leggings - * Diamond Boots -* Progressive Resource Crafting - * Tier I - * Iron Ingot from Nuggets - * Iron Nugget - * Gold Ingot from Nuggets - * Gold Nugget - * Furnace - * Blast Furnace - * Tier II - * Redstone - * Redstone Block - * Glowstone - * Iron Ingot from Iron Block - * Iron Block - * Gold Ingot from Gold Block - * Gold Block - * Diamond - * Diamond Block - * Netherite Block - * Netherite Ingot from Netherite Block - * Anvil - * Emerald - * Emerald Block - * Copper Block diff --git a/worlds/minecraft/docs/minecraft_en.md b/worlds/minecraft/docs/minecraft_en.md deleted file mode 100644 index e0b5ae3b98b5..000000000000 --- a/worlds/minecraft/docs/minecraft_en.md +++ /dev/null @@ -1,74 +0,0 @@ -# Minecraft Randomizer Setup Guide - -## Required Software - -- Minecraft Java Edition from - the [Minecraft Java Edition Store Page](https://www.minecraft.net/en-us/store/minecraft-java-edition) -- Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) - -## Configuring your YAML file - -### What is a YAML file and why do I need one? - -See the guide on setting up a basic YAML at the Archipelago setup -guide: [Basic Multiworld Setup Guide](/tutorial/Archipelago/setup/en) - -### Where do I get a YAML file? - -You can customize your options by visiting the [Minecraft Player Options Page](/games/Minecraft/player-options) - -## Joining a MultiWorld Game - -### Obtain Your Minecraft Data File - -**Only one yaml file needs to be submitted per minecraft world regardless of how many players play on it.** - -When you join a multiworld game, you will be asked to provide your YAML file to whoever is hosting. Once that is done, -the host will provide you with either a link to download your data file, or with a zip file containing everyone's data -files. Your data file should have a `.apmc` extension. - -Double-click on your `.apmc` file to have the Minecraft client auto-launch the installed forge server. Make sure to -leave this window open as this is your server console. - -### Connect to the MultiServer - -Open Minecraft, go to `Multiplayer > Direct Connection`, and join the `localhost` server address. - -If you are using the website to host the game then it should auto-connect to the AP server without the need to `/connect` - -otherwise once you are in game type `/connect (Port) (Password)` where `` is the address of the -Archipelago server. `(Port)` is only required if the Archipelago server is not using the default port of 38281. Note that there is no colon between `` and `(Port)`. -`(Password)` is only required if the Archipelago server you are using has a password set. - -### Play the game - -When the console tells you that you have joined the room, you're all set. Congratulations on successfully joining a -multiworld game! At this point any additional minecraft players may connect to your forge server. To start the game once -everyone is ready use the command `/start`. - -## Non-Windows Installation - -The Minecraft Client will install forge and the mod for other operating systems but Java has to be provided by the -user. Head to [minecraft_versions.json on the MC AP GitHub](https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json) -to see which java version is required. New installations will default to the topmost "release" version. -- Install the matching Amazon Corretto JDK - - see [Manual Installation Software Links](#manual-installation-software-links) - - or package manager provided by your OS / distribution -- Open your `host.yaml` and add the path to your Java below the `minecraft_options` key - - ` java: "path/to/java-xx-amazon-corretto/bin/java"` -- Run the Minecraft Client and select your .apmc file - -## Full Manual Installation - -It is highly recommended to ues the Archipelago installer to handle the installation of the forge server for you. -Support will not be given for those wishing to manually install forge. For those of you who know how, and wish to do so, -the following links are the versions of the software we use. - -### Manual Installation Software Links - -- [Minecraft Forge Download Page](https://files.minecraftforge.net/net/minecraftforge/forge/) -- [Minecraft Archipelago Randomizer Mod Releases Page](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - - **DO NOT INSTALL THIS ON YOUR CLIENT** -- [Amazon Corretto](https://docs.aws.amazon.com/corretto/) - - pick the matching version and select "Downloads" on the left - diff --git a/worlds/minecraft/docs/minecraft_es.md b/worlds/minecraft/docs/minecraft_es.md deleted file mode 100644 index 4f4899212240..000000000000 --- a/worlds/minecraft/docs/minecraft_es.md +++ /dev/null @@ -1,148 +0,0 @@ -# Guia instalación de Minecraft Randomizer - -# Instalacion automatica para el huesped de partida - -- descarga e instala [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) and activa el - modulo `Minecraft Client` - -## Software Requerido - -- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) - -## Configura tu fichero YAML - -### Que es un fichero YAML y potque necesito uno? - -Tu fichero YAML contiene un numero de opciones que proveen al generador con informacion sobre como debe generar tu -juego. Cada jugador de un multiworld entregara u propio fichero YAML. Esto permite que cada jugador disfrute de una -experiencia personalizada a su gusto y diferentes jugadores dentro del mismo multiworld pueden tener diferentes opciones - -### Where do I get a YAML file? - -Un fichero basico yaml para minecraft tendra este aspecto. - -```yaml -description: Basic Minecraft Yaml -# Tu nombre en el juego. Espacios seran sustituidos por guinoes bajos y -# hay un limite de 16 caracteres -name: TuNombre -game: Minecraft - -# Opciones compartidas por todos los juegos: -accessibility: full -progression_balancing: 50 -# Opciones Especficicas para Minecraft - -Minecraft: - # Numero de logros requeridos (87 max) para que aparezca el Ender Dragon y completar el juego. - advancement_goal: 50 - - # Numero de trozos de huevo de dragon a obtener (30 max) antes de que el Ender Dragon aparezca. - egg_shards_required: 10 - - # Numero de huevos disponibles en la partida (30 max). - egg_shards_available: 15 - - # Modifica el nivel de objetos logicamente requeridos para - # explorar areas peligrosas y luchar contra jefes. - combat_difficulty: - easy: 0 - normal: 1 - hard: 0 - - # Si off, los logros que dependan de suerte o sean tediosos tendran objetos de apoyo, no necesarios para completar el juego. - include_hard_advancements: - on: 0 - off: 1 - - # Si off, los logros muy dificiles tendran objetos de apoyo, no necesarios para completar el juego. - # Solo afecta a How Did We Get Here? and Adventuring Time. - include_insane_advancements: - on: 0 - off: 1 - - # Algunos logros requieren derrotar al Ender Dragon; - # Si esto se queda en off, dichos logros no tendran objetos necesarios. - include_postgame_advancements: - on: 0 - off: 1 - - # Permite el mezclado de villas, puesto, fortalezas, bastiones y ciudades de END. - shuffle_structures: - on: 0 - off: 1 - - # Añade brujulas de estructura al juego, - # apuntaran a la estructura correspondiente mas cercana. - structure_compasses: - on: 0 - off: 1 - - # Reemplaza un porcentaje de objetos innecesarios por trampas abeja - # las cuales crearan multiples abejas agresivas alrededor de los jugadores cuando se reciba. - bee_traps: - 0: 1 - 25: 0 - 50: 0 - 75: 0 - 100: 0 -``` - -## Unirse a un juego MultiWorld - -### Obten tu ficheros de datos Minecraft - -**Solo un fichero yaml es necesario por mundo minecraft, sin importar el numero de jugadores que jueguen en el.** - -Cuando te unes a un juego multiworld, se te pedirá que entregues tu fichero YAML a quien sea que hospede el juego -multiworld (no confundir con hospedar el mundo minecraft). Una vez la generación acabe, el anfitrión te dará un enlace a -tu fichero de datos o un zip con los ficheros de todos. Tu fichero de datos tiene una extensión `.apmc`. - -Haz doble click en tu fichero `.apmc` para que se arranque el cliente de minecraft y el servidor forge se ejecute. - -### Conectar al multiserver - -Despues de poner tu fichero en el directorio `APData`, arranca el Forge server y asegurate que tienes el estado OP -tecleando `/op TuUsuarioMinecraft` en la consola del servidor y entonces conectate con tu cliente Minecraft. - -Una vez en juego introduce `/connect (Port) ()` donde `` es la dirección del -servidor. `(Port)` solo es requerido si el servidor Archipelago no esta usando el puerto por defecto 38281. -`()` -solo se necesita si el servidor Archipleago tiene un password activo. - -### Jugar al juego - -Cuando la consola te diga que te has unido a la sala, estas lista/o para empezar a jugar. Felicidades por unirte -exitosamente a un juego multiworld! Llegados a este punto cualquier jugador adicional puede conectarse a tu servidor -forge. - -## Procedimiento de instalación manual - -Solo es requerido si quieres usar una instalacion de forge por ti mismo, recomendamos usar el instalador de Archipelago - -### Software Requerido - -- [Minecraft Forge](https://files.minecraftforge.net/net/minecraftforge/forge/index_1.16.5.html) -- [Minecraft Archipelago Randomizer Mod](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - **NO INSTALES ESTO EN TU CLIENTE MINECRAFT** - -### Instalación de servidor dedicado - -Solo una persona ha de realizar este proceso y hospedar un servidor dedicado para que los demas jueguen conectandose a -él. - -1. Descarga el instalador de **Minecraft Forge** 1.16.5 desde el enlace proporcionado, siempre asegurandose de bajar la - version mas reciente. - -2. Ejecuta el fichero `forge-1.16.5-xx.x.x-installer.jar` y elije **install server**. - - En esta pagina elegiras ademas donde instalar el servidor, importante recordar esta localización en el siguiente - paso. - -3. Navega al directorio donde hayas instalado el servidor y abre `forge-1.16.5-xx.x.x.jar` - - La primera vez que lances el servidor se cerrara (o no aparecerá nada en absoluto), debería haber un fichero nuevo - en el directorio llamado `eula.txt`, el cual que contiene un enlace al EULA de minecraft, cambia la linea - a `eula=true` para aceptar el EULA y poder utilizar el software de servidor. - - Esto creara la estructura de directorios apropiada para el siguiente paso - -4. Coloca el fichero `aprandomizer-x.x.x.jar` del segundo enlace en el directorio `mods` - - Cuando se ejecute el servidor de nuevo, generara el directorio `APData` que se necesitara para jugar diff --git a/worlds/minecraft/docs/minecraft_fr.md b/worlds/minecraft/docs/minecraft_fr.md deleted file mode 100644 index 31c48151f491..000000000000 --- a/worlds/minecraft/docs/minecraft_fr.md +++ /dev/null @@ -1,74 +0,0 @@ -# Guide de configuration du randomiseur Minecraft - -## Logiciel requis - -- Minecraft Java Edition à partir de - la [page de la boutique Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) -- Archipelago depuis la [page des versions d'Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases) - - (sélectionnez `Minecraft Client` lors de l'installation.) - -## Configuration de votre fichier YAML - -### Qu'est-ce qu'un fichier YAML et pourquoi en ai-je besoin ? - -Voir le guide sur la configuration d'un YAML de base lors de la configuration d'Archipelago -guide : [Guide de configuration de base de Multiworld](/tutorial/Archipelago/setup/en) - -### Où puis-je obtenir un fichier YAML ? - -Vous pouvez personnaliser vos paramètres Minecraft en allant sur la [page des paramètres de joueur](/games/Minecraft/player-options) - -## Rejoindre une partie MultiWorld - -### Obtenez votre fichier de données Minecraft - -**Un seul fichier yaml doit être soumis par monde minecraft, quel que soit le nombre de joueurs qui y jouent.** - -Lorsque vous rejoignez un jeu multimonde, il vous sera demandé de fournir votre fichier YAML à l'hébergeur. Une fois cela fait, -l'hébergeur vous fournira soit un lien pour télécharger votre fichier de données, soit un fichier zip contenant les données de chacun -des dossiers. Votre fichier de données doit avoir une extension `.apmc`. - -Double-cliquez sur votre fichier `.apmc` pour que le client Minecraft lance automatiquement le serveur forge installé. Assurez-vous de -laissez cette fenêtre ouverte car il s'agit de votre console serveur. - -### Connectez-vous au multiserveur - -Ouvrez Minecraft, accédez à "Multijoueur> Connexion directe" et rejoignez l'adresse du serveur "localhost". - -Si vous utilisez le site Web pour héberger le jeu, il devrait se connecter automatiquement au serveur AP sans avoir besoin de `/connect` - -sinon, une fois que vous êtes dans le jeu, tapez `/connect (Port) (Password)` où `` est l'adresse du -Serveur Archipelago. `(Port)` n'est requis que si le serveur Archipelago n'utilise pas le port par défaut 38281. Notez qu'il n'y a pas de deux-points entre `` et `(Port)` mais un espace. -`(Mot de passe)` n'est requis que si le serveur Archipelago que vous utilisez a un mot de passe défini. - -### Jouer le jeu - -Lorsque la console vous indique que vous avez rejoint la salle, vous êtes prêt. Félicitations pour avoir rejoint avec succès un -jeu multimonde ! À ce stade, tous les joueurs minecraft supplémentaires peuvent se connecter à votre serveur forge. Pour commencer le jeu une fois -que tout le monde est prêt utilisez la commande `/start`. - -## Installation non Windows - -Le client Minecraft installera forge et le mod pour d'autres systèmes d'exploitation, mais Java doit être fourni par l' -utilisateur. Rendez-vous sur [minecraft_versions.json sur le MC AP GitHub](https://raw.githubusercontent.com/KonoTyran/Minecraft_AP_Randomizer/master/versions/minecraft_versions.json) -pour voir quelle version de Java est requise. Les nouvelles installations utiliseront par défaut la version "release" la plus élevée. -- Installez le JDK Amazon Corretto correspondant - - voir les [Liens d'installation manuelle du logiciel](#manual-installation-software-links) - - ou gestionnaire de paquets fourni par votre OS/distribution -- Ouvrez votre `host.yaml` et ajoutez le chemin vers votre Java sous la clé `minecraft_options` - - ` java : "chemin/vers/java-xx-amazon-corretto/bin/java"` -- Exécutez le client Minecraft et sélectionnez votre fichier .apmc - -## Installation manuelle complète - -Il est fortement recommandé d'utiliser le programme d'installation d'Archipelago pour gérer l'installation du serveur forge pour vous. -Le support ne sera pas fourni pour ceux qui souhaitent installer manuellement forge. Pour ceux d'entre vous qui savent comment faire et qui souhaitent le faire, -les liens suivants sont les versions des logiciels que nous utilisons. - -### Liens d'installation manuelle du logiciel - -- [Page de téléchargement de Minecraft Forge] (https://files.minecraftforge.net/net/minecraftforge/forge/) -- [Page des versions du mod Minecraft Archipelago Randomizer] (https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - - **NE PAS INSTALLER CECI SUR VOTRE CLIENT** -- [Amazon Corretto](https://docs.aws.amazon.com/corretto/) - - choisissez la version correspondante et sélectionnez "Téléchargements" sur la gauche diff --git a/worlds/minecraft/docs/minecraft_sv.md b/worlds/minecraft/docs/minecraft_sv.md deleted file mode 100644 index ab8c1b5d8ea7..000000000000 --- a/worlds/minecraft/docs/minecraft_sv.md +++ /dev/null @@ -1,132 +0,0 @@ -# Minecraft Randomizer Uppsättningsguide - -## Nödvändig Mjukvara - -### Server Värd - -- [Minecraft Forge](https://files.minecraftforge.net/net/minecraftforge/forge/index_1.16.5.html) -- [Minecraft Archipelago Randomizer Mod](https://github.com/KonoTyran/Minecraft_AP_Randomizer/releases) - -### Spelare - -- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-edition) - -## Installationsprocedurer - -### Tillägnad - -Bara en person behöver göra denna uppsättning och vara värd för en server för alla andra spelare att koppla till. - -1. Ladda ner 1.16.5 **Minecraft Forge** installeraren från länken ovanför och se till att ladda ner den senaste - rekommenderade versionen. - -2. Kör `forge-1.16.5-xx.x.x-installer.jar` filen och välj **installera server**. - - På denna sida kommer du också välja vart du ska installera servern för att komma ihåg denna katalog. Detta är - viktigt för nästa steg. - -3. Navigera till vart du har installerat servern och öppna `forge-1.16.5-xx.x.x-installer.jar` - - Under första serverstart så kommer den att stängas ner och fråga dig att acceptera Minecrafts EULA. En ny fil - kommer skapas vid namn `eula.txt` som har en länk till Minecrafts EULA, och en linje som du behöver byta - till `eula=true` för att acceptera Minecrafts EULA. - - Detta kommer skapa de lämpliga katalogerna för dig att placera filerna i de följande steget. - -4. Placera `aprandomizer-x.x.x.jar` länken ovanför i `mods` mappen som ligger ovanför installationen av din forge - server. - - Kör servern igen. Den kommer ladda up och generera den nödvändiga katalogen `APData` för när du är redo att spela! - -### Grundläggande Spelaruppsättning - -- Köp och installera Minecraft från länken ovanför. - - **Du är klar**. - - Andra spelare behöver endast ha en 'Vanilla' omodifierad version av Minecraft för att kunna spela! - -### Avancerad Spelaruppsättning - -***Detta är inte nödvändigt för att spela ett slumpmässigt Minecraftspel.*** -Dock så är det rekommenderat eftersom det hjälper att göra upplevelsen mer trevligt. - -#### Rekommenderade Moddar - -- [JourneyMap](https://www.curseforge.com/minecraft/mc-mods/journeymap) (Minimap) - - -1. Installera och Kör Minecraft från länken ovanför minst en gång. -2. Kör `forge-1.16.5-xx.x.x-installer.jar` filen och välj **installera klient**. - - Starta Minecraft Forge minst en gång för att skapa katalogerna som behövs för de nästa stegen. -3. Navigera till din Minecraft installationskatalog och placera de önskade moddarna med `.jar` i `mods` -katalogen. - - Standardinstallationskatalogerna är som följande; - - Windows `%APPDATA%\.minecraft\mods` - - macOS `~/Library/Application Support/minecraft/mods` - - Linux `~/.minecraft/mods` - -## Konfigurera Din YAML-fil - -### Vad är en YAML-fil och varför behöver jag en? - -Din YAML-fil behåller en uppsättning av konfigurationsalternativ som ger generatorn med information om hur den borde -generera ditt spel. Varje spelare i en multivärld kommer behöva ge deras egen YAML-fil. Denna uppsättning tillåter varje -spelare att an njuta av en upplevelse anpassade för deras smaker, och olika spelare i samma multivärld kan ha helt olika -alternativ. - -### Vart kan jag få tag i en YAML-fil? - -En grundläggande Minecraft YAML kommer se ut så här. - -```yaml -description: Template Name -# Ditt spelnamn. Mellanslag kommer bli omplacerad med understräck och det är en 16-karaktärsgräns. -name: YourName -game: Minecraft -accessibility: full -progression_balancing: 0 -advancement_goal: - few: 0 - normal: 1 - many: 0 -combat_difficulty: - easy: 0 - normal: 1 - hard: 0 -include_hard_advancements: - on: 0 - off: 1 -include_insane_advancements: - on: 0 - off: 1 -include_postgame_advancements: - on: 0 - off: 1 -shuffle_structures: - on: 1 - off: 0 -``` - - -## Gå med i ett Multivärld-spel - -### Skaffa din Minecraft data-fil - -**Endast en YAML-fil behöver användats per Minecraft-värld oavsett hur många spelare det är som spelar.** - -När du går med it ett Multivärld spel så kommer du bli ombedd att lämna in din YAML-fil till personen som värdar. När -detta är klart så kommer värden att ge dig antingen en länk till att ladda ner din data-fil, eller mer en zip-fil som -innehåller allas data-filer. Din data-fil borde ha en `.apmc` -extension. - -Lägg din data-fil i dina forge-servrar `APData` -mapp. Se till att ta bort alla tidigare data-filer som var i där förut. - -### Koppla till Multiservern - -Efter du har placerat din data-fil i `APData` -mappen, starta forge-servern och se till att you har OP-status genom att -skriva `/op DittAnvändarnamn` i forger-serverns konsol innan du kopplar dig till din Minecraft klient. När du är inne i -spelet, skriv `/connect ()` där `` är addressen av -Archipelago-servern. `()` är endast nödvändigt om Archipelago-servern som du använder har ett tillsatt -lösenord. - -### Spela spelet - -När konsolen har informerat att du har gått med i rummet så är du redo att börja spela. Grattis att du har lykats med -att gått med i ett Multivärld-spel! Vid detta tillfälle, alla ytterligare Minecraft-spelare må koppla in till din -forge-server. - diff --git a/worlds/minecraft/requirements.txt b/worlds/minecraft/requirements.txt deleted file mode 100644 index 85fe230fe57b..000000000000 --- a/worlds/minecraft/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -requests >= 2.28.1 # used by client diff --git a/worlds/minecraft/test/TestAdvancements.py b/worlds/minecraft/test/TestAdvancements.py deleted file mode 100644 index 321aef1af934..000000000000 --- a/worlds/minecraft/test/TestAdvancements.py +++ /dev/null @@ -1,1410 +0,0 @@ -from . import MCTestBase - - -# Format: -# [location, expected_result, given_items, [excluded_items]] -# Every advancement has its own test, named by its internal ID number. -class TestAdvancements(MCTestBase): - options = { - "shuffle_structures": False, - "structure_compasses": False - } - - def test_42000(self): - self.run_location_tests([ - ["Who is Cutting Onions?", False, []], - ["Who is Cutting Onions?", False, [], ['Progressive Resource Crafting']], - ["Who is Cutting Onions?", False, [], ['Flint and Steel']], - ["Who is Cutting Onions?", False, [], ['Progressive Tools']], - ["Who is Cutting Onions?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Who is Cutting Onions?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Who is Cutting Onions?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42001(self): - self.run_location_tests([ - ["Oh Shiny", False, []], - ["Oh Shiny", False, [], ['Progressive Resource Crafting']], - ["Oh Shiny", False, [], ['Flint and Steel']], - ["Oh Shiny", False, [], ['Progressive Tools']], - ["Oh Shiny", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Oh Shiny", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Oh Shiny", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42002(self): - self.run_location_tests([ - ["Suit Up", False, []], - ["Suit Up", False, [], ["Progressive Armor"]], - ["Suit Up", False, [], ["Progressive Resource Crafting"]], - ["Suit Up", False, [], ["Progressive Tools"]], - ["Suit Up", True, ["Progressive Armor", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42003(self): - self.run_location_tests([ - ["Very Very Frightening", False, []], - ["Very Very Frightening", False, [], ['Channeling Book']], - ["Very Very Frightening", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Very Very Frightening", False, [], ['Enchanting']], - ["Very Very Frightening", False, [], ['Progressive Tools']], - ["Very Very Frightening", False, [], ['Progressive Weapons']], - ["Very Very Frightening", True, ['Progressive Weapons', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Enchanting', 'Progressive Resource Crafting', 'Progressive Resource Crafting', 'Channeling Book']], - ]) - - def test_42004(self): - self.run_location_tests([ - ["Hot Stuff", False, []], - ["Hot Stuff", False, [], ["Bucket"]], - ["Hot Stuff", False, [], ["Progressive Resource Crafting"]], - ["Hot Stuff", False, [], ["Progressive Tools"]], - ["Hot Stuff", True, ["Bucket", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42005(self): - self.run_location_tests([ - ["Free the End", False, []], - ["Free the End", False, [], ['Progressive Resource Crafting']], - ["Free the End", False, [], ['Flint and Steel']], - ["Free the End", False, [], ['Progressive Tools']], - ["Free the End", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Free the End", False, [], ['Progressive Armor']], - ["Free the End", False, [], ['Brewing']], - ["Free the End", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Free the End", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Free the End", False, [], ['Archery']], - ["Free the End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Free the End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42006(self): - self.run_location_tests([ - ["A Furious Cocktail", False, []], - ["A Furious Cocktail", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["A Furious Cocktail", False, [], ['Flint and Steel']], - ["A Furious Cocktail", False, [], ['Progressive Tools']], - ["A Furious Cocktail", False, [], ['Progressive Weapons']], - ["A Furious Cocktail", False, [], ['Progressive Armor', 'Shield']], - ["A Furious Cocktail", False, [], ['Brewing']], - ["A Furious Cocktail", False, [], ['Bottles']], - ["A Furious Cocktail", False, [], ['Fishing Rod']], - ["A Furious Cocktail", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["A Furious Cocktail", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', - 'Enchanting', 'Brewing', 'Bottles', 'Fishing Rod']], - ]) - - def test_42007(self): - self.run_location_tests([ - ["Best Friends Forever", True, []], - ]) - - def test_42008(self): - self.run_location_tests([ - ["Bring Home the Beacon", False, []], - ["Bring Home the Beacon", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Bring Home the Beacon", False, [], ['Flint and Steel']], - ["Bring Home the Beacon", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Bring Home the Beacon", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Bring Home the Beacon", False, ['Progressive Armor'], ['Progressive Armor']], - ["Bring Home the Beacon", False, [], ['Enchanting']], - ["Bring Home the Beacon", False, [], ['Brewing']], - ["Bring Home the Beacon", False, [], ['Bottles']], - ["Bring Home the Beacon", True, [], ['Bucket']], - ["Bring Home the Beacon", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', - 'Enchanting', 'Brewing', 'Bottles']], - ]) - - def test_42009(self): - self.run_location_tests([ - ["Not Today, Thank You", False, []], - ["Not Today, Thank You", False, [], ["Shield"]], - ["Not Today, Thank You", False, [], ["Progressive Resource Crafting"]], - ["Not Today, Thank You", False, [], ["Progressive Tools"]], - ["Not Today, Thank You", True, ["Shield", "Progressive Resource Crafting", "Progressive Tools"]], - ]) - - def test_42010(self): - self.run_location_tests([ - ["Isn't It Iron Pick", False, []], - ["Isn't It Iron Pick", True, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Isn't It Iron Pick", False, [], ["Progressive Tools", "Progressive Tools"]], - ["Isn't It Iron Pick", False, [], ["Progressive Resource Crafting"]], - ["Isn't It Iron Pick", False, ["Progressive Tools", "Progressive Resource Crafting"]], - ["Isn't It Iron Pick", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42011(self): - self.run_location_tests([ - ["Local Brewery", False, []], - ["Local Brewery", False, [], ['Progressive Resource Crafting']], - ["Local Brewery", False, [], ['Flint and Steel']], - ["Local Brewery", False, [], ['Progressive Tools']], - ["Local Brewery", False, [], ['Progressive Weapons']], - ["Local Brewery", False, [], ['Progressive Armor', 'Shield']], - ["Local Brewery", False, [], ['Brewing']], - ["Local Brewery", False, [], ['Bottles']], - ["Local Brewery", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Local Brewery", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42012(self): - self.run_location_tests([ - ["The Next Generation", False, []], - ["The Next Generation", False, [], ['Progressive Resource Crafting']], - ["The Next Generation", False, [], ['Flint and Steel']], - ["The Next Generation", False, [], ['Progressive Tools']], - ["The Next Generation", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["The Next Generation", False, [], ['Progressive Armor']], - ["The Next Generation", False, [], ['Brewing']], - ["The Next Generation", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The Next Generation", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The Next Generation", False, [], ['Archery']], - ["The Next Generation", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The Next Generation", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42013(self): - self.run_location_tests([ - ["Fishy Business", False, []], - ["Fishy Business", False, [], ['Fishing Rod']], - ["Fishy Business", True, ['Fishing Rod']], - ]) - - def test_42014(self): - self.run_location_tests([ - ["Hot Tourist Destinations", False, []], - ["Hot Tourist Destinations", False, [], ['Progressive Resource Crafting']], - ["Hot Tourist Destinations", False, [], ['Flint and Steel']], - ["Hot Tourist Destinations", False, [], ['Progressive Tools']], - ["Hot Tourist Destinations", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Hot Tourist Destinations", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Hot Tourist Destinations", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42015(self): - self.run_location_tests([ - ["This Boat Has Legs", False, []], - ["This Boat Has Legs", False, [], ['Progressive Resource Crafting']], - ["This Boat Has Legs", False, [], ['Flint and Steel']], - ["This Boat Has Legs", False, [], ['Progressive Tools']], - ["This Boat Has Legs", False, [], ['Progressive Weapons']], - ["This Boat Has Legs", False, [], ['Progressive Armor', 'Shield']], - ["This Boat Has Legs", False, [], ['Fishing Rod']], - ["This Boat Has Legs", False, [], ['Saddle']], - ["This Boat Has Legs", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Flint and Steel', 'Bucket', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Flint and Steel', 'Bucket', 'Fishing Rod']], - ["This Boat Has Legs", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Fishing Rod']], - ]) - - def test_42016(self): - self.run_location_tests([ - ["Sniper Duel", False, []], - ["Sniper Duel", False, [], ['Archery']], - ["Sniper Duel", True, ['Archery']], - ]) - - def test_42017(self): - self.run_location_tests([ - ["Nether", False, []], - ["Nether", False, [], ['Progressive Resource Crafting']], - ["Nether", False, [], ['Flint and Steel']], - ["Nether", False, [], ['Progressive Tools']], - ["Nether", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Nether", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Nether", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42018(self): - self.run_location_tests([ - ["Great View From Up Here", False, []], - ["Great View From Up Here", False, [], ['Progressive Resource Crafting']], - ["Great View From Up Here", False, [], ['Flint and Steel']], - ["Great View From Up Here", False, [], ['Progressive Tools']], - ["Great View From Up Here", False, [], ['Progressive Weapons']], - ["Great View From Up Here", False, [], ['Progressive Armor', 'Shield']], - ["Great View From Up Here", False, [], ['Brewing']], - ["Great View From Up Here", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Great View From Up Here", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Great View From Up Here", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42019(self): - self.run_location_tests([ - ["How Did We Get Here?", False, []], - ["How Did We Get Here?", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["How Did We Get Here?", False, [], ['Flint and Steel']], - ["How Did We Get Here?", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["How Did We Get Here?", False, ['Progressive Weapons', 'Progressive Weapons'], ['Progressive Weapons']], - ["How Did We Get Here?", False, ['Progressive Armor'], ['Progressive Armor']], - ["How Did We Get Here?", False, [], ['Shield']], - ["How Did We Get Here?", False, [], ['Enchanting']], - ["How Did We Get Here?", False, [], ['Brewing']], - ["How Did We Get Here?", False, [], ['Bottles']], - ["How Did We Get Here?", False, [], ['Archery']], - ["How Did We Get Here?", False, [], ['Fishing Rod']], - ["How Did We Get Here?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["How Did We Get Here?", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Flint and Steel', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', - 'Progressive Armor', 'Progressive Armor', 'Shield', - 'Enchanting', 'Brewing', 'Archery', 'Bottles', 'Fishing Rod', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42020(self): - self.run_location_tests([ - ["Bullseye", False, []], - ["Bullseye", False, [], ['Archery']], - ["Bullseye", False, [], ['Progressive Resource Crafting']], - ["Bullseye", False, [], ['Progressive Tools']], - ["Bullseye", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Resource Crafting', 'Archery']], - ]) - - def test_42021(self): - self.run_location_tests([ - ["Spooky Scary Skeleton", False, []], - ["Spooky Scary Skeleton", False, [], ['Progressive Resource Crafting']], - ["Spooky Scary Skeleton", False, [], ['Flint and Steel']], - ["Spooky Scary Skeleton", False, [], ['Progressive Tools']], - ["Spooky Scary Skeleton", False, [], ['Progressive Weapons']], - ["Spooky Scary Skeleton", False, [], ['Progressive Armor', 'Shield']], - ["Spooky Scary Skeleton", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["Spooky Scary Skeleton", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42022(self): - self.run_location_tests([ - ["Two by Two", False, []], - ["Two by Two", False, [], ['Progressive Resource Crafting']], - ["Two by Two", False, [], ['Flint and Steel']], - ["Two by Two", False, [], ['Progressive Tools']], - ["Two by Two", False, [], ['Progressive Weapons']], - ["Two by Two", False, [], ['Bucket']], - ["Two by Two", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Two by Two", False, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ["Two by Two", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ]) - - def test_42023(self): - self.run_location_tests([ - ["Stone Age", True, []], - ]) - - def test_42024(self): - self.run_location_tests([ - ["Two Birds, One Arrow", False, []], - ["Two Birds, One Arrow", False, [], ['Archery']], - ["Two Birds, One Arrow", False, [], ['Progressive Resource Crafting']], - ["Two Birds, One Arrow", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["Two Birds, One Arrow", False, [], ['Enchanting']], - ["Two Birds, One Arrow", True, ['Archery', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Enchanting']], - ]) - - def test_42025(self): - self.run_location_tests([ - ["We Need to Go Deeper", False, []], - ["We Need to Go Deeper", False, [], ['Progressive Resource Crafting']], - ["We Need to Go Deeper", False, [], ['Flint and Steel']], - ["We Need to Go Deeper", False, [], ['Progressive Tools']], - ["We Need to Go Deeper", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["We Need to Go Deeper", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["We Need to Go Deeper", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42026(self): - self.run_location_tests([ - ["Who's the Pillager Now?", False, []], - ["Who's the Pillager Now?", False, [], ['Archery']], - ["Who's the Pillager Now?", False, [], ['Progressive Resource Crafting']], - ["Who's the Pillager Now?", False, [], ['Progressive Tools']], - ["Who's the Pillager Now?", False, [], ['Progressive Weapons']], - ["Who's the Pillager Now?", True, ['Archery', 'Progressive Tools', 'Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42027(self): - self.run_location_tests([ - ["Getting an Upgrade", False, []], - ["Getting an Upgrade", True, ["Progressive Tools"]], - ]) - - def test_42028(self): - self.run_location_tests([ - ["Tactical Fishing", False, []], - ["Tactical Fishing", False, [], ['Progressive Resource Crafting']], - ["Tactical Fishing", False, [], ['Progressive Tools']], - ["Tactical Fishing", False, [], ['Bucket']], - ["Tactical Fishing", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Bucket']], - ]) - - def test_42029(self): - self.run_location_tests([ - ["Zombie Doctor", False, []], - ["Zombie Doctor", False, [], ['Progressive Resource Crafting']], - ["Zombie Doctor", False, [], ['Flint and Steel']], - ["Zombie Doctor", False, [], ['Progressive Tools']], - ["Zombie Doctor", False, [], ['Progressive Weapons']], - ["Zombie Doctor", False, [], ['Progressive Armor', 'Shield']], - ["Zombie Doctor", False, [], ['Brewing']], - ["Zombie Doctor", False, [], ['Bottles']], - ["Zombie Doctor", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Zombie Doctor", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42030(self): - self.run_location_tests([ - ["The City at the End of the Game", False, []], - ["The City at the End of the Game", False, [], ['Progressive Resource Crafting']], - ["The City at the End of the Game", False, [], ['Flint and Steel']], - ["The City at the End of the Game", False, [], ['Progressive Tools']], - ["The City at the End of the Game", False, [], ['Progressive Weapons']], - ["The City at the End of the Game", False, [], ['Progressive Armor', 'Shield']], - ["The City at the End of the Game", False, [], ['Brewing']], - ["The City at the End of the Game", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The City at the End of the Game", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The City at the End of the Game", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42031(self): - self.run_location_tests([ - ["Ice Bucket Challenge", False, []], - ["Ice Bucket Challenge", False, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Ice Bucket Challenge", False, [], ["Progressive Resource Crafting"]], - ["Ice Bucket Challenge", True, ["Progressive Tools", "Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42032(self): - self.run_location_tests([ - ["Remote Getaway", False, []], - ["Remote Getaway", False, [], ['Progressive Resource Crafting']], - ["Remote Getaway", False, [], ['Flint and Steel']], - ["Remote Getaway", False, [], ['Progressive Tools']], - ["Remote Getaway", False, [], ['Progressive Weapons']], - ["Remote Getaway", False, [], ['Progressive Armor', 'Shield']], - ["Remote Getaway", False, [], ['Brewing']], - ["Remote Getaway", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Remote Getaway", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Remote Getaway", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42033(self): - self.run_location_tests([ - ["Into Fire", False, []], - ["Into Fire", False, [], ['Progressive Resource Crafting']], - ["Into Fire", False, [], ['Flint and Steel']], - ["Into Fire", False, [], ['Progressive Tools']], - ["Into Fire", False, [], ['Progressive Weapons']], - ["Into Fire", False, [], ['Progressive Armor', 'Shield']], - ["Into Fire", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["Into Fire", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42034(self): - self.run_location_tests([ - ["War Pigs", False, []], - ["War Pigs", False, [], ['Progressive Resource Crafting']], - ["War Pigs", False, [], ['Flint and Steel']], - ["War Pigs", False, [], ['Progressive Tools']], - ["War Pigs", False, [], ['Progressive Weapons']], - ["War Pigs", False, [], ['Progressive Armor', 'Shield']], - ["War Pigs", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["War Pigs", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ["War Pigs", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ]) - - def test_42035(self): - self.run_location_tests([ - ["Take Aim", False, []], - ["Take Aim", False, [], ['Archery']], - ["Take Aim", True, ['Archery']], - ]) - - def test_42036(self): - self.run_location_tests([ - ["Total Beelocation", False, []], - ["Total Beelocation", False, [], ['Enchanting']], - ["Total Beelocation", False, [], ['Silk Touch Book']], - ["Total Beelocation", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Total Beelocation", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Total Beelocation", True, ['Enchanting', 'Silk Touch Book', 'Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42037(self): - self.run_location_tests([ - ["Arbalistic", False, []], - ["Arbalistic", False, [], ['Enchanting']], - ["Arbalistic", False, [], ['Piercing IV Book']], - ["Arbalistic", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Arbalistic", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Arbalistic", False, [], ['Archery']], - ["Arbalistic", True, ['Enchanting', 'Piercing IV Book', 'Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Archery']], - ]) - - def test_42038(self): - self.run_location_tests([ - ["The End... Again...", False, []], - ["The End... Again...", False, [], ['Progressive Resource Crafting']], - ["The End... Again...", False, [], ['Flint and Steel']], - ["The End... Again...", False, [], ['Progressive Tools']], - ["The End... Again...", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["The End... Again...", False, [], ['Progressive Armor']], - ["The End... Again...", False, [], ['Brewing']], - ["The End... Again...", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End... Again...", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End... Again...", False, [], ['Archery']], - ["The End... Again...", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End... Again...", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Archery', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42039(self): - self.run_location_tests([ - ["Acquire Hardware", False, []], - ["Acquire Hardware", False, [], ["Progressive Tools"]], - ["Acquire Hardware", False, [], ["Progressive Resource Crafting"]], - ["Acquire Hardware", True, ["Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42040(self): - self.run_location_tests([ - ["Not Quite \"Nine\" Lives", False, []], - ["Not Quite \"Nine\" Lives", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Not Quite \"Nine\" Lives", False, [], ['Flint and Steel']], - ["Not Quite \"Nine\" Lives", False, [], ['Progressive Tools']], - ["Not Quite \"Nine\" Lives", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Not Quite \"Nine\" Lives", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Not Quite \"Nine\" Lives", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42041(self): - self.run_location_tests([ - ["Cover Me With Diamonds", False, []], - ["Cover Me With Diamonds", False, ['Progressive Armor'], ['Progressive Armor']], - ["Cover Me With Diamonds", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["Cover Me With Diamonds", False, [], ['Progressive Resource Crafting']], - ["Cover Me With Diamonds", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Armor', 'Progressive Armor']], - ]) - - def test_42042(self): - self.run_location_tests([ - ["Sky's the Limit", False, []], - ["Sky's the Limit", False, [], ['Progressive Resource Crafting']], - ["Sky's the Limit", False, [], ['Flint and Steel']], - ["Sky's the Limit", False, [], ['Progressive Tools']], - ["Sky's the Limit", False, [], ['Progressive Weapons']], - ["Sky's the Limit", False, [], ['Progressive Armor', 'Shield']], - ["Sky's the Limit", False, [], ['Brewing']], - ["Sky's the Limit", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Sky's the Limit", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["Sky's the Limit", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42043(self): - self.run_location_tests([ - ["Hired Help", False, []], - ["Hired Help", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Hired Help", False, [], ['Progressive Tools']], - ["Hired Help", True, ['Progressive Tools', 'Progressive Resource Crafting', 'Progressive Resource Crafting']], - ]) - - def test_42044(self): - self.run_location_tests([ - ["Return to Sender", False, []], - ["Return to Sender", False, [], ['Progressive Resource Crafting']], - ["Return to Sender", False, [], ['Flint and Steel']], - ["Return to Sender", False, [], ['Progressive Tools']], - ["Return to Sender", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Return to Sender", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket']], - ["Return to Sender", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42045(self): - self.run_location_tests([ - ["Sweet Dreams", False, []], - ["Sweet Dreams", True, ['Bed']], - ["Sweet Dreams", False, [], ['Bed', 'Progressive Weapons']], - ["Sweet Dreams", False, [], ['Bed', 'Progressive Resource Crafting', 'Campfire']], - ["Sweet Dreams", True, ['Progressive Weapons', 'Progressive Resource Crafting'], ['Bed', 'Campfire']], - ["Sweet Dreams", True, ['Progressive Weapons', 'Campfire'], ['Bed', 'Progressive Resource Crafting']], - ]) - - def test_42046(self): - self.run_location_tests([ - ["You Need a Mint", False, []], - ["You Need a Mint", False, [], ['Progressive Resource Crafting']], - ["You Need a Mint", False, [], ['Flint and Steel']], - ["You Need a Mint", False, [], ['Progressive Tools']], - ["You Need a Mint", False, [], ['Progressive Weapons']], - ["You Need a Mint", False, [], ['Progressive Armor', 'Shield']], - ["You Need a Mint", False, [], ['Brewing']], - ["You Need a Mint", False, [], ['Bottles']], - ["You Need a Mint", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["You Need a Mint", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ["You Need a Mint", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Bottles']], - ]) - - def test_42047(self): - self.run_location_tests([ - ["Adventure", True, []], - ]) - - def test_42048(self): - self.run_location_tests([ - ["Monsters Hunted", False, []], - ["Monsters Hunted", False, [], ['Progressive Resource Crafting']], - ["Monsters Hunted", False, [], ['Flint and Steel']], - ["Monsters Hunted", False, [], ['Progressive Tools']], - ["Monsters Hunted", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Monsters Hunted", False, [], ['Progressive Armor']], - ["Monsters Hunted", False, [], ['Brewing']], - ["Monsters Hunted", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Monsters Hunted", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Monsters Hunted", False, [], ['Archery']], - ["Monsters Hunted", False, [], ['Enchanting']], - ["Monsters Hunted", False, [], ['Fishing Rod']], - ["Monsters Hunted", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Archery', - 'Progressive Armor', 'Progressive Armor', 'Enchanting', - 'Fishing Rod', 'Brewing', 'Bottles', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42049(self): - self.run_location_tests([ - ["Enchanter", False, []], - ["Enchanter", False, [], ['Enchanting']], - ["Enchanter", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Enchanter", False, [], ['Progressive Resource Crafting']], - ["Enchanter", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Enchanting', 'Progressive Resource Crafting']], - ]) - - def test_42050(self): - self.run_location_tests([ - ["Voluntary Exile", False, []], - ["Voluntary Exile", False, [], ['Progressive Weapons']], - ["Voluntary Exile", False, [], ['Progressive Armor', 'Shield']], - ["Voluntary Exile", False, [], ['Progressive Tools']], - ["Voluntary Exile", False, [], ['Progressive Resource Crafting']], - ["Voluntary Exile", True, ['Progressive Tools', 'Progressive Armor', 'Progressive Weapons', 'Progressive Resource Crafting']], - ["Voluntary Exile", True, ['Progressive Tools', 'Shield', 'Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42051(self): - self.run_location_tests([ - ["Eye Spy", False, []], - ["Eye Spy", False, [], ['Progressive Resource Crafting']], - ["Eye Spy", False, [], ['Flint and Steel']], - ["Eye Spy", False, [], ['Progressive Tools']], - ["Eye Spy", False, [], ['Progressive Weapons']], - ["Eye Spy", False, [], ['Progressive Armor', 'Shield']], - ["Eye Spy", False, [], ['Brewing']], - ["Eye Spy", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Eye Spy", False, [], ['3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', '3 Ender Pearls']], - ["Eye Spy", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', '3 Ender Pearls']], - ]) - - def test_42052(self): - self.run_location_tests([ - ["The End", False, []], - ["The End", False, [], ['Progressive Resource Crafting']], - ["The End", False, [], ['Flint and Steel']], - ["The End", False, [], ['Progressive Tools']], - ["The End", False, [], ['Progressive Weapons']], - ["The End", False, [], ['Progressive Armor', 'Shield']], - ["The End", False, [], ['Brewing']], - ["The End", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42053(self): - self.run_location_tests([ - ["Serious Dedication", False, []], - ["Serious Dedication", False, [], ['Progressive Resource Crafting']], - ["Serious Dedication", False, [], ['Flint and Steel']], - ["Serious Dedication", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Serious Dedication", False, [], ['Progressive Weapons']], - ["Serious Dedication", False, [], ['Progressive Armor', 'Shield']], - ["Serious Dedication", False, [], ['Brewing']], - ["Serious Dedication", False, [], ['Bottles']], - ["Serious Dedication", False, [], ['Bed']], - ["Serious Dedication", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Serious Dedication", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42054(self): - self.run_location_tests([ - ["Postmortal", False, []], - ["Postmortal", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Postmortal", False, [], ['Progressive Armor']], - ["Postmortal", False, [], ['Shield']], - ["Postmortal", False, [], ['Progressive Resource Crafting']], - ["Postmortal", False, [], ['Progressive Tools']], - ["Postmortal", True, ['Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42055(self): - self.run_location_tests([ - ["Monster Hunter", True, []], - ]) - - def test_42056(self): - self.run_location_tests([ - ["Adventuring Time", False, []], - ["Adventuring Time", False, [], ['Progressive Weapons']], - ["Adventuring Time", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["Adventuring Time", True, ['Progressive Weapons', 'Campfire']], - ["Adventuring Time", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42057(self): - self.run_location_tests([ - ["A Seedy Place", True, []], - ]) - - def test_42058(self): - self.run_location_tests([ - ["Those Were the Days", False, []], - ["Those Were the Days", False, [], ['Progressive Resource Crafting']], - ["Those Were the Days", False, [], ['Flint and Steel']], - ["Those Were the Days", False, [], ['Progressive Tools']], - ["Those Were the Days", False, [], ['Progressive Weapons']], - ["Those Were the Days", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Those Were the Days", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ["Those Were the Days", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ]) - - def test_42059(self): - self.run_location_tests([ - ["Hero of the Village", False, []], - ["Hero of the Village", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Hero of the Village", False, [], ['Progressive Armor']], - ["Hero of the Village", False, [], ['Shield']], - ["Hero of the Village", False, [], ['Progressive Resource Crafting']], - ["Hero of the Village", False, [], ['Progressive Tools']], - ["Hero of the Village", True, ['Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42060(self): - self.run_location_tests([ - ["Hidden in the Depths", False, []], - ["Hidden in the Depths", False, [], ['Progressive Resource Crafting']], - ["Hidden in the Depths", False, [], ['Flint and Steel']], - ["Hidden in the Depths", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Hidden in the Depths", False, [], ['Progressive Weapons']], - ["Hidden in the Depths", False, [], ['Progressive Armor', 'Shield']], - ["Hidden in the Depths", False, [], ['Brewing']], - ["Hidden in the Depths", False, [], ['Bottles']], - ["Hidden in the Depths", False, [], ['Bed']], - ["Hidden in the Depths", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Hidden in the Depths", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42061(self): - self.run_location_tests([ - ["Beaconator", False, []], - ["Beaconator", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Beaconator", False, [], ['Flint and Steel']], - ["Beaconator", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Beaconator", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Beaconator", False, ['Progressive Armor'], ['Progressive Armor']], - ["Beaconator", False, [], ['Brewing']], - ["Beaconator", False, [], ['Bottles']], - ["Beaconator", False, [], ['Enchanting']], - ["Beaconator", True, [], ['Bucket']], - ["Beaconator", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Enchanting']], - ]) - - def test_42062(self): - self.run_location_tests([ - ["Withering Heights", False, []], - ["Withering Heights", False, [], ['Progressive Resource Crafting']], - ["Withering Heights", False, [], ['Flint and Steel']], - ["Withering Heights", False, [], ['Progressive Tools']], - ["Withering Heights", False, ['Progressive Weapons'], ['Progressive Weapons', 'Progressive Weapons']], - ["Withering Heights", False, ['Progressive Armor'], ['Progressive Armor']], - ["Withering Heights", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Withering Heights", False, [], ['Brewing']], - ["Withering Heights", False, [], ['Bottles']], - ["Withering Heights", False, [], ['Enchanting']], - ["Withering Heights", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Enchanting']], - ]) - - def test_42063(self): - self.run_location_tests([ - ["A Balanced Diet", False, []], - ["A Balanced Diet", False, [], ['Bottles']], - ["A Balanced Diet", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["A Balanced Diet", False, [], ['Flint and Steel']], - ["A Balanced Diet", False, [], ['Progressive Tools']], - ["A Balanced Diet", False, [], ['Progressive Weapons']], - ["A Balanced Diet", False, [], ['Progressive Armor', 'Shield']], - ["A Balanced Diet", False, [], ['Brewing']], - ["A Balanced Diet", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["A Balanced Diet", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["A Balanced Diet", True, ['Progressive Resource Crafting', 'Progressive Resource Crafting', - 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Bottles', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42064(self): - self.run_location_tests([ - ["Subspace Bubble", False, []], - ["Subspace Bubble", False, [], ['Progressive Resource Crafting']], - ["Subspace Bubble", False, [], ['Flint and Steel']], - ["Subspace Bubble", False, [], ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Subspace Bubble", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Resource Crafting']], - ]) - - def test_42065(self): - self.run_location_tests([ - ["Husbandry", True, []], - ]) - - def test_42066(self): - self.run_location_tests([ - ["Country Lode, Take Me Home", False, []], - ["Country Lode, Take Me Home", False, [], ['Progressive Resource Crafting']], - ["Country Lode, Take Me Home", False, [], ['Flint and Steel']], - ["Country Lode, Take Me Home", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Country Lode, Take Me Home", False, [], ['Progressive Weapons']], - ["Country Lode, Take Me Home", False, [], ['Progressive Armor', 'Shield']], - ["Country Lode, Take Me Home", False, [], ['Brewing']], - ["Country Lode, Take Me Home", False, [], ['Bottles']], - ["Country Lode, Take Me Home", False, [], ['Bed']], - ["Country Lode, Take Me Home", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles', 'Bed']], - ["Country Lode, Take Me Home", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles', 'Bed']], - ]) - - def test_42067(self): - self.run_location_tests([ - ["Bee Our Guest", False, []], - ["Bee Our Guest", False, [], ['Campfire']], - ["Bee Our Guest", False, [], ['Bottles']], - ["Bee Our Guest", False, [], ['Progressive Resource Crafting']], - ["Bee Our Guest", True, ['Campfire', 'Bottles', 'Progressive Resource Crafting']], - ]) - - def test_42068(self): - self.run_location_tests([ - ["What a Deal!", False, []], - ["What a Deal!", False, [], ['Progressive Weapons']], - ["What a Deal!", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["What a Deal!", True, ['Progressive Weapons', 'Campfire']], - ["What a Deal!", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42069(self): - self.run_location_tests([ - ["Uneasy Alliance", False, []], - ["Uneasy Alliance", False, [], ['Progressive Resource Crafting']], - ["Uneasy Alliance", False, [], ['Flint and Steel']], - ["Uneasy Alliance", False, [], ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Uneasy Alliance", False, [], ['Fishing Rod']], - ["Uneasy Alliance", True, ['Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Resource Crafting', 'Fishing Rod']], - ]) - - def test_42070(self): - self.run_location_tests([ - ["Diamonds!", False, []], - ["Diamonds!", True, ["Progressive Tools", "Progressive Tools"], ["Progressive Tools"]], - ["Diamonds!", False, [], ["Progressive Tools", "Progressive Tools"]], - ["Diamonds!", False, [], ["Progressive Resource Crafting"]], - ["Diamonds!", False, ["Progressive Tools", "Progressive Resource Crafting"]], - ["Diamonds!", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting"]], - ]) - - def test_42071(self): - self.run_location_tests([ - ["A Terrible Fortress", False, []], - ["A Terrible Fortress", False, [], ['Progressive Resource Crafting']], - ["A Terrible Fortress", False, [], ['Flint and Steel']], - ["A Terrible Fortress", False, [], ['Progressive Tools']], - ["A Terrible Fortress", False, [], ['Progressive Weapons']], - ["A Terrible Fortress", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["A Terrible Fortress", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons']], - ["A Terrible Fortress", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - ]) - - def test_42072(self): - self.run_location_tests([ - ["A Throwaway Joke", False, []], - ["A Throwaway Joke", False, [], ['Progressive Weapons']], - ["A Throwaway Joke", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["A Throwaway Joke", True, ['Progressive Weapons', 'Campfire']], - ["A Throwaway Joke", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42073(self): - self.run_location_tests([ - ["Minecraft", True, []], - ]) - - def test_42074(self): - self.run_location_tests([ - ["Sticky Situation", False, []], - ["Sticky Situation", False, [], ['Bottles']], - ["Sticky Situation", False, [], ['Progressive Resource Crafting']], - ["Sticky Situation", False, [], ['Campfire']], - ["Sticky Situation", True, ['Bottles', 'Progressive Resource Crafting', 'Campfire']], - ]) - - def test_42075(self): - self.run_location_tests([ - ["Ol' Betsy", False, []], - ["Ol' Betsy", False, [], ['Archery']], - ["Ol' Betsy", False, [], ['Progressive Resource Crafting']], - ["Ol' Betsy", False, [], ['Progressive Tools']], - ["Ol' Betsy", True, ['Archery', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42076(self): - self.run_location_tests([ - ["Cover Me in Debris", False, []], - ["Cover Me in Debris", False, [], ['Progressive Resource Crafting']], - ["Cover Me in Debris", False, [], ['Flint and Steel']], - ["Cover Me in Debris", False, ['Progressive Tools', 'Progressive Tools'], ['Progressive Tools']], - ["Cover Me in Debris", False, [], ['Progressive Weapons']], - ["Cover Me in Debris", False, ['Progressive Armor'], ['Progressive Armor']], - ["Cover Me in Debris", False, [], ['Brewing']], - ["Cover Me in Debris", False, [], ['Bottles']], - ["Cover Me in Debris", False, [], ['Bed']], - ["Cover Me in Debris", False, ['8 Netherite Scrap'], ['8 Netherite Scrap']], - ["Cover Me in Debris", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Progressive Armor', - 'Brewing', 'Bottles', 'Bed', '8 Netherite Scrap', '8 Netherite Scrap']], - ]) - - def test_42077(self): - self.run_location_tests([ - ["The End?", False, []], - ["The End?", False, [], ['Progressive Resource Crafting']], - ["The End?", False, [], ['Flint and Steel']], - ["The End?", False, [], ['Progressive Tools']], - ["The End?", False, [], ['Progressive Weapons']], - ["The End?", False, [], ['Progressive Armor', 'Shield']], - ["The End?", False, [], ['Brewing']], - ["The End?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["The End?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ["The End?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def test_42078(self): - self.run_location_tests([ - ["The Parrots and the Bats", True, []], - ]) - - def test_42079(self): - self.run_location_tests([ - ["A Complete Catalogue", False, []], - ["A Complete Catalogue", False, [], ['Progressive Weapons']], - ["A Complete Catalogue", False, [], ['Campfire', 'Progressive Resource Crafting']], - ["A Complete Catalogue", True, ['Progressive Weapons', 'Campfire']], - ["A Complete Catalogue", True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ]) - - def test_42080(self): - self.run_location_tests([ - ["Getting Wood", True, []], - ]) - - def test_42081(self): - self.run_location_tests([ - ["Time to Mine!", True, []], - ]) - - def test_42082(self): - self.run_location_tests([ - ["Hot Topic", False, []], - ["Hot Topic", True, ['Progressive Resource Crafting']], - ]) - - def test_42083(self): - self.run_location_tests([ - ["Bake Bread", True, []], - ]) - - def test_42084(self): - self.run_location_tests([ - ["The Lie", False, []], - ["The Lie", False, [], ['Progressive Resource Crafting']], - ["The Lie", False, [], ['Bucket']], - ["The Lie", False, [], ['Progressive Tools']], - ["The Lie", True, ['Bucket', 'Progressive Resource Crafting', 'Progressive Tools']], - ]) - - def test_42085(self): - self.run_location_tests([ - ["On a Rail", False, []], - ["On a Rail", False, [], ['Progressive Resource Crafting']], - ["On a Rail", False, ['Progressive Tools'], ['Progressive Tools', 'Progressive Tools']], - ["On a Rail", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools']], - ]) - - def test_42086(self): - self.run_location_tests([ - ["Time to Strike!", True, []], - ]) - - def test_42087(self): - self.run_location_tests([ - ["Cow Tipper", True, []], - ]) - - def test_42088(self): - self.run_location_tests([ - ["When Pigs Fly", False, []], - ["When Pigs Fly", False, [], ['Progressive Resource Crafting']], - ["When Pigs Fly", False, [], ['Progressive Tools']], - ["When Pigs Fly", False, [], ['Progressive Weapons']], - ["When Pigs Fly", False, [], ['Progressive Armor', 'Shield']], - ["When Pigs Fly", False, [], ['Fishing Rod']], - ["When Pigs Fly", False, [], ['Saddle']], - ["When Pigs Fly", False, ['Progressive Weapons'], ['Flint and Steel', 'Progressive Weapons', 'Progressive Weapons']], - ["When Pigs Fly", False, ['Progressive Tools', 'Progressive Tools', 'Progressive Weapons'], ['Bucket', 'Progressive Tools', 'Progressive Weapons', 'Progressive Weapons']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ["When Pigs Fly", True, ['Saddle', 'Progressive Weapons', 'Progressive Weapons', 'Progressive Armor', 'Shield', 'Progressive Resource Crafting', 'Progressive Tools', 'Fishing Rod']], - ]) - - def test_42089(self): - self.run_location_tests([ - ["Overkill", False, []], - ["Overkill", False, [], ['Progressive Resource Crafting']], - ["Overkill", False, [], ['Flint and Steel']], - ["Overkill", False, [], ['Progressive Tools']], - ["Overkill", False, [], ['Progressive Weapons']], - ["Overkill", False, [], ['Progressive Armor', 'Shield']], - ["Overkill", False, [], ['Brewing']], - ["Overkill", False, [], ['Bottles']], - ["Overkill", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ["Overkill", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', 'Bottles']], - ]) - - def test_42090(self): - self.run_location_tests([ - ["Librarian", False, []], - ["Librarian", True, ['Enchanting']], - ]) - - def test_42091(self): - self.run_location_tests([ - ["Overpowered", False, []], - ["Overpowered", False, [], ['Progressive Resource Crafting']], - ["Overpowered", False, [], ['Flint and Steel']], - ["Overpowered", False, ['Progressive Tools', 'Progressive Tools', 'Bucket', 'Flint and Steel']], - ["Overpowered", False, [], ['Progressive Weapons']], - ["Overpowered", False, [], ['Progressive Armor', 'Shield']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Weapons', 'Progressive Armor']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Weapons', 'Shield']], - ["Overpowered", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield']], - ]) - - def test_42092(self): - self.run_location_tests([ - ["Wax On", False, []], - ["Wax On", False, [], ["Progressive Tools"]], - ["Wax On", False, [], ["Campfire"]], - ["Wax On", False, ["Progressive Resource Crafting"], ["Progressive Resource Crafting"]], - ["Wax On", True, ["Progressive Tools", "Progressive Resource Crafting", "Progressive Resource Crafting", "Campfire"]], - ]) - - def test_42093(self): - self.run_location_tests([ - ["Wax Off", False, []], - ["Wax Off", False, [], ["Progressive Tools"]], - ["Wax Off", False, [], ["Campfire"]], - ["Wax Off", False, ["Progressive Resource Crafting"], ["Progressive Resource Crafting"]], - ["Wax Off", True, ["Progressive Tools", "Progressive Resource Crafting", "Progressive Resource Crafting", "Campfire"]], - ]) - - def test_42094(self): - self.run_location_tests([ - ["The Cutest Predator", False, []], - ["The Cutest Predator", False, [], ["Progressive Tools"]], - ["The Cutest Predator", False, [], ["Progressive Resource Crafting"]], - ["The Cutest Predator", False, [], ["Bucket"]], - ["The Cutest Predator", True, ["Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42095(self): - self.run_location_tests([ - ["The Healing Power of Friendship", False, []], - ["The Healing Power of Friendship", False, [], ["Progressive Tools"]], - ["The Healing Power of Friendship", False, [], ["Progressive Resource Crafting"]], - ["The Healing Power of Friendship", False, [], ["Bucket"]], - ["The Healing Power of Friendship", True, ["Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42096(self): - self.run_location_tests([ - ["Is It a Bird?", False, []], - ["Is It a Bird?", False, [], ["Progressive Weapons"]], - ["Is It a Bird?", False, [], ["Progressive Tools"]], - ["Is It a Bird?", False, [], ["Progressive Resource Crafting"]], - ["Is It a Bird?", False, [], ["Spyglass"]], - ["Is It a Bird?", True, ["Progressive Weapons", "Progressive Tools", "Progressive Resource Crafting", "Spyglass"]], - ]) - - def test_42097(self): - self.run_location_tests([ - ["Is It a Balloon?", False, []], - ["Is It a Balloon?", False, [], ['Progressive Resource Crafting']], - ["Is It a Balloon?", False, [], ['Flint and Steel']], - ["Is It a Balloon?", False, [], ['Progressive Tools']], - ["Is It a Balloon?", False, [], ['Progressive Weapons']], - ["Is It a Balloon?", False, [], ['Spyglass']], - ["Is It a Balloon?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Is It a Balloon?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Spyglass']], - ["Is It a Balloon?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons', 'Spyglass']], - ]) - - def test_42098(self): - self.run_location_tests([ - ["Is It a Plane?", False, []], - ["Is It a Plane?", False, [], ['Progressive Resource Crafting']], - ["Is It a Plane?", False, [], ['Flint and Steel']], - ["Is It a Plane?", False, [], ['Progressive Tools']], - ["Is It a Plane?", False, [], ['Progressive Weapons']], - ["Is It a Plane?", False, [], ['Progressive Armor', 'Shield']], - ["Is It a Plane?", False, [], ['Brewing']], - ["Is It a Plane?", False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ["Is It a Plane?", False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ["Is It a Plane?", False, [], ['Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ["Is It a Plane?", True, ['Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', 'Brewing', - '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', 'Spyglass']], - ]) - - def test_42099(self): - self.run_location_tests([ - ["Surge Protector", False, []], - ["Surge Protector", False, [], ['Channeling Book']], - ["Surge Protector", False, ['Progressive Resource Crafting'], ['Progressive Resource Crafting']], - ["Surge Protector", False, [], ['Enchanting']], - ["Surge Protector", False, [], ['Progressive Tools']], - ["Surge Protector", False, [], ['Progressive Weapons']], - ["Surge Protector", True, ['Progressive Weapons', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Enchanting', 'Progressive Resource Crafting', 'Progressive Resource Crafting', 'Channeling Book']], - ]) - - def test_42100(self): - self.run_location_tests([ - ["Light as a Rabbit", False, []], - ["Light as a Rabbit", False, [], ["Progressive Weapons"]], - ["Light as a Rabbit", False, [], ["Progressive Tools"]], - ["Light as a Rabbit", False, [], ["Progressive Resource Crafting"]], - ["Light as a Rabbit", False, [], ["Bucket"]], - ["Light as a Rabbit", True, ["Progressive Weapons", "Progressive Tools", "Progressive Resource Crafting", "Bucket"]], - ]) - - def test_42101(self): - self.run_location_tests([ - ["Glow and Behold!", False, []], - ["Glow and Behold!", False, [], ["Progressive Weapons"]], - ["Glow and Behold!", False, [], ["Progressive Resource Crafting", "Campfire"]], - ["Glow and Behold!", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ["Glow and Behold!", True, ["Progressive Weapons", "Campfire"]], - ]) - - def test_42102(self): - self.run_location_tests([ - ["Whatever Floats Your Goat!", False, []], - ["Whatever Floats Your Goat!", False, [], ["Progressive Weapons"]], - ["Whatever Floats Your Goat!", False, [], ["Progressive Resource Crafting", "Campfire"]], - ["Whatever Floats Your Goat!", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ["Whatever Floats Your Goat!", True, ["Progressive Weapons", "Campfire"]], - ]) - - # bucket, iron pick - def test_42103(self): - self.run_location_tests([ - ["Caves & Cliffs", False, []], - ["Caves & Cliffs", False, [], ["Bucket"]], - ["Caves & Cliffs", False, [], ["Progressive Tools"]], - ["Caves & Cliffs", False, [], ["Progressive Resource Crafting"]], - ["Caves & Cliffs", True, ["Progressive Resource Crafting", "Progressive Tools", "Progressive Tools", "Bucket"]], - ]) - - # bucket, fishing rod, saddle, combat - def test_42104(self): - self.run_location_tests([ - ["Feels like home", False, []], - ["Feels like home", False, [], ['Progressive Resource Crafting']], - ["Feels like home", False, [], ['Progressive Tools']], - ["Feels like home", False, [], ['Progressive Weapons']], - ["Feels like home", False, [], ['Progressive Armor', 'Shield']], - ["Feels like home", False, [], ['Fishing Rod']], - ["Feels like home", False, [], ['Saddle']], - ["Feels like home", False, [], ['Bucket']], - ["Feels like home", False, [], ['Flint and Steel']], - ["Feels like home", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Progressive Armor', 'Fishing Rod']], - ["Feels like home", True, ['Saddle', 'Progressive Resource Crafting', 'Progressive Tools', 'Flint and Steel', 'Bucket', 'Progressive Weapons', 'Shield', 'Fishing Rod']], - ]) - - # iron pick, combat - def test_42105(self): - self.run_location_tests([ - ["Sound of Music", False, []], - ["Sound of Music", False, [], ["Progressive Tools"]], - ["Sound of Music", False, [], ["Progressive Resource Crafting"]], - ["Sound of Music", False, [], ["Progressive Weapons"]], - ["Sound of Music", False, [], ["Progressive Armor", "Shield"]], - ["Sound of Music", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons", "Progressive Armor"]], - ["Sound of Music", True, ["Progressive Tools", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons", "Shield"]], - ]) - - # bucket, nether, villager - def test_42106(self): - self.run_location_tests([ - ["Star Trader", False, []], - ["Star Trader", False, [], ["Bucket"]], - ["Star Trader", False, [], ["Flint and Steel"]], - ["Star Trader", False, [], ["Progressive Tools"]], - ["Star Trader", False, [], ["Progressive Resource Crafting"]], - ["Star Trader", False, [], ["Progressive Weapons"]], - ["Star Trader", True, ["Bucket", "Flint and Steel", "Progressive Tools", "Progressive Resource Crafting", "Progressive Weapons"]], - ]) - - # bucket, redstone -> iron pick, pillager outpost -> adventure - def test_42107(self): - self.run_location_tests([ - ["Birthday Song", False, []], - ["Birthday Song", False, [], ["Bucket"]], - ["Birthday Song", False, [], ["Progressive Tools"]], - ["Birthday Song", False, [], ["Progressive Weapons"]], - ["Birthday Song", False, [], ["Progressive Resource Crafting"]], - ["Birthday Song", True, ["Progressive Resource Crafting", "Progressive Tools", "Progressive Tools", "Progressive Weapons", "Bucket"]], - ]) - - # bucket, adventure - def test_42108(self): - self.run_location_tests([ - ["Bukkit Bukkit", False, []], - ["Bukkit Bukkit", False, [], ["Bucket"]], - ["Bukkit Bukkit", False, [], ["Progressive Tools"]], - ["Bukkit Bukkit", False, [], ["Progressive Weapons"]], - ["Bukkit Bukkit", False, [], ["Progressive Resource Crafting"]], - ["Bukkit Bukkit", True, ["Bucket", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # iron pick, adventure - def test_42109(self): - self.run_location_tests([ - ["It Spreads", False, []], - ["It Spreads", False, [], ["Progressive Tools"]], - ["It Spreads", False, [], ["Progressive Weapons"]], - ["It Spreads", False, [], ["Progressive Resource Crafting"]], - ["It Spreads", True, ["Progressive Tools", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # iron pick, adventure - def test_42110(self): - self.run_location_tests([ - ["Sneak 100", False, []], - ["Sneak 100", False, [], ["Progressive Tools"]], - ["Sneak 100", False, [], ["Progressive Weapons"]], - ["Sneak 100", False, [], ["Progressive Resource Crafting"]], - ["Sneak 100", True, ["Progressive Tools", "Progressive Tools", "Progressive Weapons", "Progressive Resource Crafting"]], - ]) - - # adventure, lead - def test_42111(self): - self.run_location_tests([ - ["When the Squad Hops into Town", False, []], - ["When the Squad Hops into Town", False, [], ["Progressive Weapons"]], - ["When the Squad Hops into Town", False, [], ["Campfire", "Progressive Resource Crafting"]], - ["When the Squad Hops into Town", False, [], ["Lead"]], - ["When the Squad Hops into Town", True, ["Progressive Weapons", "Lead", "Campfire"]], - ["When the Squad Hops into Town", True, ["Progressive Weapons", "Lead", "Progressive Resource Crafting"]], - ]) - - # adventure, lead, nether - def test_42112(self): - self.run_location_tests([ - ["With Our Powers Combined!", False, []], - ["With Our Powers Combined!", False, [], ["Lead"]], - ["With Our Powers Combined!", False, [], ["Bucket", "Progressive Tools"]], - ["With Our Powers Combined!", False, [], ["Flint and Steel"]], - ["With Our Powers Combined!", False, [], ["Progressive Weapons"]], - ["With Our Powers Combined!", False, [], ["Progressive Resource Crafting"]], - ["With Our Powers Combined!", True, ["Lead", "Progressive Weapons", "Progressive Resource Crafting", "Flint and Steel", "Progressive Tools", "Bucket"]], - ["With Our Powers Combined!", True, ["Lead", "Progressive Weapons", "Progressive Resource Crafting", "Flint and Steel", "Progressive Tools", "Progressive Tools", "Progressive Tools"]], - ]) - - # pillager outpost -> adventure - def test_42113(self): - self.run_location_tests([ - ["You've Got a Friend in Me", False, []], - ["You've Got a Friend in Me", False, [], ["Progressive Weapons"]], - ["You've Got a Friend in Me", False, [], ["Campfire", "Progressive Resource Crafting"]], - ["You've Got a Friend in Me", True, ["Progressive Weapons", "Campfire"]], - ["You've Got a Friend in Me", True, ["Progressive Weapons", "Progressive Resource Crafting"]], - ]) diff --git a/worlds/minecraft/test/TestDataLoad.py b/worlds/minecraft/test/TestDataLoad.py deleted file mode 100644 index c14eef071bfc..000000000000 --- a/worlds/minecraft/test/TestDataLoad.py +++ /dev/null @@ -1,60 +0,0 @@ -import unittest - -from .. import Constants - -class TestDataLoad(unittest.TestCase): - - def test_item_data(self): - item_info = Constants.item_info - - # All items in sub-tables are in all_items - all_items: set = set(item_info['all_items']) - assert set(item_info['progression_items']) <= all_items - assert set(item_info['useful_items']) <= all_items - assert set(item_info['trap_items']) <= all_items - assert set(item_info['required_pool'].keys()) <= all_items - assert set(item_info['junk_weights'].keys()) <= all_items - - # No overlapping ids (because of bee trap stuff) - all_ids: set = set(Constants.item_name_to_id.values()) - assert len(all_items) == len(all_ids) - - def test_location_data(self): - location_info = Constants.location_info - exclusion_info = Constants.exclusion_info - - # Every location has a region and every region's locations are in all_locations - all_locations: set = set(location_info['all_locations']) - all_locs_2: set = set() - for v in location_info['locations_by_region'].values(): - all_locs_2.update(v) - assert all_locations == all_locs_2 - - # All exclusions are locations - for v in exclusion_info.values(): - assert set(v) <= all_locations - - def test_region_data(self): - region_info = Constants.region_info - - # Every entrance and region in mandatory/default/illegal connections is a real entrance and region - all_regions = set() - all_entrances = set() - for v in region_info['regions']: - assert isinstance(v[0], str) - assert isinstance(v[1], list) - all_regions.add(v[0]) - all_entrances.update(v[1]) - - for v in region_info['mandatory_connections']: - assert v[0] in all_entrances - assert v[1] in all_regions - - for v in region_info['default_connections']: - assert v[0] in all_entrances - assert v[1] in all_regions - - for k, v in region_info['illegal_connections'].items(): - assert k in all_regions - assert set(v) <= all_entrances - diff --git a/worlds/minecraft/test/TestEntrances.py b/worlds/minecraft/test/TestEntrances.py deleted file mode 100644 index 946eb23d6308..000000000000 --- a/worlds/minecraft/test/TestEntrances.py +++ /dev/null @@ -1,97 +0,0 @@ -from . import MCTestBase - - -class TestEntrances(MCTestBase): - options = { - "shuffle_structures": False, - "structure_compasses": False - } - - def testPortals(self): - self.run_entrance_tests([ - ['Nether Portal', False, []], - ['Nether Portal', False, [], ['Flint and Steel']], - ['Nether Portal', False, [], ['Progressive Resource Crafting']], - ['Nether Portal', False, [], ['Progressive Tools']], - ['Nether Portal', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket']], - ['Nether Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools']], - - ['End Portal', False, []], - ['End Portal', False, [], ['Brewing']], - ['End Portal', False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ['End Portal', False, [], ['Flint and Steel']], - ['End Portal', False, [], ['Progressive Resource Crafting']], - ['End Portal', False, [], ['Progressive Tools']], - ['End Portal', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['End Portal', False, [], ['Progressive Weapons']], - ['End Portal', False, [], ['Progressive Armor', 'Shield']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['End Portal', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ]) - - def testStructures(self): - self.run_entrance_tests([ # Structures 1 and 2 should be logically equivalent - ['Overworld Structure 1', False, []], - ['Overworld Structure 1', False, [], ['Progressive Weapons']], - ['Overworld Structure 1', False, [], ['Progressive Resource Crafting', 'Campfire']], - ['Overworld Structure 1', True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ['Overworld Structure 1', True, ['Progressive Weapons', 'Campfire']], - - ['Overworld Structure 2', False, []], - ['Overworld Structure 2', False, [], ['Progressive Weapons']], - ['Overworld Structure 2', False, [], ['Progressive Resource Crafting', 'Campfire']], - ['Overworld Structure 2', True, ['Progressive Weapons', 'Progressive Resource Crafting']], - ['Overworld Structure 2', True, ['Progressive Weapons', 'Campfire']], - - ['Nether Structure 1', False, []], - ['Nether Structure 1', False, [], ['Flint and Steel']], - ['Nether Structure 1', False, [], ['Progressive Resource Crafting']], - ['Nether Structure 1', False, [], ['Progressive Tools']], - ['Nether Structure 1', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Structure 1', False, [], ['Progressive Weapons']], - ['Nether Structure 1', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', 'Progressive Weapons']], - ['Nether Structure 1', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - - ['Nether Structure 2', False, []], - ['Nether Structure 2', False, [], ['Flint and Steel']], - ['Nether Structure 2', False, [], ['Progressive Resource Crafting']], - ['Nether Structure 2', False, [], ['Progressive Tools']], - ['Nether Structure 2', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['Nether Structure 2', False, [], ['Progressive Weapons']], - ['Nether Structure 2', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', 'Progressive Weapons']], - ['Nether Structure 2', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', 'Progressive Weapons']], - - ['The End Structure', False, []], - ['The End Structure', False, [], ['Brewing']], - ['The End Structure', False, ['3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls'], ['3 Ender Pearls']], - ['The End Structure', False, [], ['Flint and Steel']], - ['The End Structure', False, [], ['Progressive Resource Crafting']], - ['The End Structure', False, [], ['Progressive Tools']], - ['The End Structure', False, ['Progressive Tools', 'Progressive Tools'], ['Bucket', 'Progressive Tools']], - ['The End Structure', False, [], ['Progressive Weapons']], - ['The End Structure', False, [], ['Progressive Armor', 'Shield']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Bucket', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Progressive Armor', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - ['The End Structure', True, ['Flint and Steel', 'Progressive Resource Crafting', 'Progressive Tools', 'Progressive Tools', 'Progressive Tools', - 'Progressive Weapons', 'Shield', - 'Brewing', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls', '3 Ender Pearls']], - - ]) \ No newline at end of file diff --git a/worlds/minecraft/test/TestOptions.py b/worlds/minecraft/test/TestOptions.py deleted file mode 100644 index c04a07054c9c..000000000000 --- a/worlds/minecraft/test/TestOptions.py +++ /dev/null @@ -1,49 +0,0 @@ -from . import MCTestBase -from ..Constants import region_info -from .. import Options - -from BaseClasses import ItemClassification - -class AdvancementTestBase(MCTestBase): - options = { - "advancement_goal": Options.AdvancementGoal.range_end - } - # beatability test implicit - -class ShardTestBase(MCTestBase): - options = { - "egg_shards_required": Options.EggShardsRequired.range_end, - "egg_shards_available": Options.EggShardsAvailable.range_end - } - - # check that itempool is not overfilled with shards - def test_itempool(self): - assert len(self.multiworld.get_unfilled_locations()) == len(self.multiworld.itempool) - -class CompassTestBase(MCTestBase): - def test_compasses_in_pool(self): - structures = [x[1] for x in region_info["default_connections"]] - itempool_str = {item.name for item in self.multiworld.itempool} - for struct in structures: - assert f"Structure Compass ({struct})" in itempool_str - -class NoBeeTestBase(MCTestBase): - options = { - "bee_traps": Options.BeeTraps.range_start - } - - # With no bees, there are no traps in the pool - def test_bees(self): - for item in self.multiworld.itempool: - assert item.classification != ItemClassification.trap - - -class AllBeeTestBase(MCTestBase): - options = { - "bee_traps": Options.BeeTraps.range_end - } - - # With max bees, there are no filler items, only bee traps - def test_bees(self): - for item in self.multiworld.itempool: - assert item.classification != ItemClassification.filler diff --git a/worlds/minecraft/test/__init__.py b/worlds/minecraft/test/__init__.py deleted file mode 100644 index 3d936fe9cb6b..000000000000 --- a/worlds/minecraft/test/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -from test.bases import TestBase, WorldTestBase -from .. import MinecraftWorld, MinecraftOptions - - -class MCTestBase(WorldTestBase, TestBase): - game = "Minecraft" - player: int = 1 - - def _create_items(self, items, player): - singleton = False - if isinstance(items, str): - items = [items] - singleton = True - ret = [self.multiworld.worlds[player].create_item(item) for item in items] - if singleton: - return ret[0] - return ret - - def _get_items(self, item_pool, all_except): - if all_except and len(all_except) > 0: - items = self.multiworld.itempool[:] - items = [item for item in items if item.name not in all_except] - items.extend(self._create_items(item_pool[0], 1)) - else: - items = self._create_items(item_pool[0], 1) - return self.get_state(items) - - def _get_items_partial(self, item_pool, missing_item): - new_items = item_pool[0].copy() - new_items.remove(missing_item) - items = self._create_items(new_items, 1) - return self.get_state(items) - diff --git a/worlds/mmbn3/Rom.py b/worlds/mmbn3/Rom.py index 79da50e534b4..347375c50356 100644 --- a/worlds/mmbn3/Rom.py +++ b/worlds/mmbn3/Rom.py @@ -185,7 +185,7 @@ def add_progression_scripts(self): # As far as I know, this should literally not be possible. # Every script I've looked at has dozens of unused indices, so finding 9 (8 plus one "ending" script) # should be no problem. We re-use these so we don't have to worry about an area getting tons of these - raise AssertionError("Error in generation -- not enough room for progressive undernet in archive "+self.startOffset) + raise AssertionError(f"Error in generation -- not enough room for progressive undernet in archive {self.startOffset} ({hex(self.startOffset)})") for i in range(9): # There are 8 progressive undernet ranks new_script_index = self.unused_indices[i] new_script = ArchiveScript(new_script_index, generate_progressive_undernet(i, self.unused_indices[i+1])) @@ -319,15 +319,16 @@ def get_source_data(cls) -> bytes: def get_base_rom_path(file_name: str = "") -> str: - options = Utils.get_options() if not file_name: - bn3_options = options.get("mmbn3_options", None) + from worlds.mmbn3 import MMBN3World + bn3_options = MMBN3World.settings + if bn3_options is None: file_name = "Mega Man Battle Network 3 - Blue Version (USA).gba" else: file_name = bn3_options["rom_file"] if not os.path.exists(file_name): - file_name = Utils.local_path(file_name) + file_name = Utils.user_path(file_name) return file_name diff --git a/worlds/mmbn3/__init__.py b/worlds/mmbn3/__init__.py index 08165a7df6e2..80716977d3dd 100644 --- a/worlds/mmbn3/__init__.py +++ b/worlds/mmbn3/__init__.py @@ -1,7 +1,6 @@ import os import settings import typing -import threading from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification, Region, Entrance, \ LocationProgressType @@ -16,7 +15,7 @@ from .Regions import regions, RegionName from .Names.ItemName import ItemName from .Names.LocationName import LocationName -from worlds.generic.Rules import add_item_rule, add_rule +from worlds.generic.Rules import add_item_rule, add_rule, forbid_item class MMBN3Settings(settings.Group): @@ -26,8 +25,15 @@ class RomFile(settings.UserFilePath): description = "MMBN3 ROM File" md5s = [MMBN3DeltaPatch.hash] + class RomStart(str): + """ + Set this to false to never autostart a rom (such as after patching), + true for operating system default program + Alternatively, a path to a program to open the .gba file with + """ + rom_file: RomFile = RomFile(RomFile.copy_to) - rom_start: bool = True + rom_start: RomStart | bool = True class MMBN3Web(WebWorld): @@ -203,131 +209,134 @@ def set_rules(self) -> None: # Set WWW ID requirements def has_www_id(state): return state.has(ItemName.WWW_ID, self.player) - add_rule(self.multiworld.get_location(LocationName.ACDC_1_PMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.SciLab_1_WWW_BMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_WWW_BMD, self.player), has_www_id) - add_rule(self.multiworld.get_location(LocationName.Undernet_1_WWW_BMD, self.player), has_www_id) + add_rule(self.get_location(LocationName.ACDC_1_PMD), has_www_id) + add_rule(self.get_location(LocationName.SciLab_1_WWW_BMD), has_www_id) + add_rule(self.get_location(LocationName.Yoka_1_WWW_BMD), has_www_id) + add_rule(self.get_location(LocationName.Undernet_1_WWW_BMD), has_www_id) # Set Press Program requirements def has_press(state): return state.has(ItemName.Press, self.player) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_PMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Yoka_2_Upper_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Beach_2_East_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Hades_South_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Secret_3_BugFrag_BMD, self.player), has_press) - add_rule(self.multiworld.get_location(LocationName.Secret_3_Island_BMD, self.player), has_press) + add_rule(self.get_location(LocationName.Yoka_1_PMD), has_press) + add_rule(self.get_location(LocationName.Yoka_2_Upper_BMD), has_press) + add_rule(self.get_location(LocationName.Beach_2_East_BMD), has_press) + add_rule(self.get_location(LocationName.Hades_South_BMD), has_press) + add_rule(self.get_location(LocationName.Secret_3_BugFrag_BMD), has_press) + add_rule(self.get_location(LocationName.Secret_3_Island_BMD), has_press) # Set Purple Mystery Data Unlocker access def can_unlock(state): return state.can_reach_region(RegionName.SciLab_Overworld, self.player) or \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) or \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) or \ state.has(ItemName.Unlocker, self.player, 8) # There are 8 PMDs that aren't in one of the above areas - add_rule(self.multiworld.get_location(LocationName.ACDC_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Yoka_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_1_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Undernet_7_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Mayls_HP_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.SciLab_Dads_Computer_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Zoo_Panda_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_DNN_Security_Panel_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Beach_DNN_Main_Console_PMD, self.player), can_unlock) - add_rule(self.multiworld.get_location(LocationName.Tamakos_HP_PMD, self.player), can_unlock) + add_rule(self.get_location(LocationName.ACDC_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Yoka_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_1_PMD), can_unlock) + add_rule(self.get_location(LocationName.Undernet_7_PMD), can_unlock) + add_rule(self.get_location(LocationName.Mayls_HP_PMD), can_unlock) + add_rule(self.get_location(LocationName.SciLab_Dads_Computer_PMD), can_unlock) + add_rule(self.get_location(LocationName.Zoo_Panda_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_DNN_Security_Panel_PMD), can_unlock) + add_rule(self.get_location(LocationName.Beach_DNN_Main_Console_PMD), can_unlock) + add_rule(self.get_location(LocationName.Tamakos_HP_PMD), can_unlock) # Set Job additional area access - self.multiworld.get_location(LocationName.Please_deliver_this, self.player).access_rule = \ + self.get_location(LocationName.Please_deliver_this).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.My_Navi_is_sick, self.player).access_rule =\ + self.get_location(LocationName.My_Navi_is_sick).access_rule =\ lambda state: \ state.has(ItemName.Recov30_star, self.player) - self.multiworld.get_location(LocationName.Help_me_with_my_son, self.player).access_rule =\ + self.get_location(LocationName.Help_me_with_my_son).access_rule =\ lambda state:\ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Transmission_error, self.player).access_rule = \ + self.get_location(LocationName.Transmission_error).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Chip_Prices, self.player).access_rule = \ + self.get_location(LocationName.Chip_Prices).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Im_broke, self.player).access_rule = \ + self.get_location(LocationName.Im_broke).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Rare_chips_for_cheap, self.player).access_rule = \ + self.get_location(LocationName.Rare_chips_for_cheap).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Be_my_boyfriend, self.player).access_rule =\ + self.get_location(LocationName.Be_my_boyfriend).access_rule =\ lambda state: \ state.can_reach_region(RegionName.Beach_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Will_you_deliver, self.player).access_rule=\ + self.get_location(LocationName.Will_you_deliver).access_rule=\ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Somebody_please_help, self.player).access_rule = \ + self.get_location(LocationName.Somebody_please_help).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Looking_for_condor, self.player).access_rule = \ + self.get_location(LocationName.Looking_for_condor).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) - self.multiworld.get_location(LocationName.Help_with_rehab, self.player).access_rule = \ + self.get_location(LocationName.Help_with_rehab).access_rule = \ + lambda state: \ + state.can_reach_region(RegionName.Beach_Overworld, self.player) + self.get_location(LocationName.Help_with_rehab_bonus).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Old_Master, self.player).access_rule = \ + self.get_location(LocationName.Old_Master).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Catching_gang_members, self.player).access_rule = \ + self.get_location(LocationName.Catching_gang_members).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) and \ state.has(ItemName.Press, self.player) - self.multiworld.get_location(LocationName.Please_adopt_a_virus, self.player).access_rule = \ + self.get_location(LocationName.Please_adopt_a_virus).access_rule = \ lambda state: \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Legendary_Tomes, self.player).access_rule = \ + self.get_location(LocationName.Legendary_Tomes).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.Undernet, self.player) and \ state.can_reach_region(RegionName.Deep_Undernet, self.player) and \ state.has_all({ItemName.Press, ItemName.Magnum1_A}, self.player) - self.multiworld.get_location(LocationName.Legendary_Tomes_Treasure, self.player).access_rule = \ + self.get_location(LocationName.Legendary_Tomes_Treasure).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_location(LocationName.Legendary_Tomes, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_First_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_First_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Second_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Second_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Third_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Third_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Fourth_Child, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Fourth_Child).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Hide_and_seek_Completion, self.player).access_rule = \ + self.get_location(LocationName.Hide_and_seek_Completion).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Yoka_Overworld, self.player) - self.multiworld.get_location(LocationName.Finding_the_blue_Navi, self.player).access_rule = \ + self.get_location(LocationName.Finding_the_blue_Navi).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Undernet, self.player) - self.multiworld.get_location(LocationName.Give_your_support, self.player).access_rule = \ + self.get_location(LocationName.Give_your_support).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) - self.multiworld.get_location(LocationName.Stamp_collecting, self.player).access_rule = \ + self.get_location(LocationName.Stamp_collecting).access_rule = \ lambda state: \ state.can_reach_region(RegionName.Beach_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ state.can_reach_region(RegionName.SciLab_Cyberworld, self.player) and \ state.can_reach_region(RegionName.Yoka_Cyberworld, self.player) and \ state.can_reach_region(RegionName.Beach_Cyberworld, self.player) - self.multiworld.get_location(LocationName.Help_with_a_will, self.player).access_rule = \ + self.get_location(LocationName.Help_with_a_will).access_rule = \ lambda state: \ state.can_reach_region(RegionName.ACDC_Overworld, self.player) and \ state.can_reach_region(RegionName.ACDC_Cyberworld, self.player) and \ @@ -337,100 +346,115 @@ def can_unlock(state): return state.can_reach_region(RegionName.SciLab_Overworld state.can_reach_region(RegionName.Undernet, self.player) # Set Trade quests - self.multiworld.get_location(LocationName.ACDC_SonicWav_W_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_SonicWav_W_Trade).access_rule =\ lambda state: state.has(ItemName.SonicWav_W, self.player) - self.multiworld.get_location(LocationName.ACDC_Bubbler_C_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_Bubbler_C_Trade).access_rule =\ lambda state: state.has(ItemName.Bubbler_C, self.player) - self.multiworld.get_location(LocationName.ACDC_Recov120_S_Trade, self.player).access_rule =\ + self.get_location(LocationName.ACDC_Recov120_S_Trade).access_rule =\ lambda state: state.has(ItemName.Recov120_S, self.player) - self.multiworld.get_location(LocationName.SciLab_Shake1_S_Trade, self.player).access_rule =\ + self.get_location(LocationName.SciLab_Shake1_S_Trade).access_rule =\ lambda state: state.has(ItemName.Shake1_S, self.player) - self.multiworld.get_location(LocationName.Yoka_FireSwrd_P_Trade, self.player).access_rule =\ + self.get_location(LocationName.Yoka_FireSwrd_P_Trade).access_rule =\ lambda state: state.has(ItemName.FireSwrd_P, self.player) - self.multiworld.get_location(LocationName.Hospital_DynaWav_V_Trade, self.player).access_rule =\ + self.get_location(LocationName.Hospital_DynaWav_V_Trade).access_rule =\ lambda state: state.has(ItemName.DynaWave_V, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_WideSwrd_C_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_WideSwrd_C_Trade).access_rule =\ lambda state: state.has(ItemName.WideSwrd_C, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_HoleMetr_H_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_HoleMetr_H_Trade).access_rule =\ lambda state: state.has(ItemName.HoleMetr_H, self.player) - self.multiworld.get_location(LocationName.Beach_DNN_Shadow_J_Trade, self.player).access_rule =\ + self.get_location(LocationName.Beach_DNN_Shadow_J_Trade).access_rule =\ lambda state: state.has(ItemName.Shadow_J, self.player) - self.multiworld.get_location(LocationName.Hades_GrabBack_K_Trade, self.player).access_rule =\ + self.get_location(LocationName.Hades_GrabBack_K_Trade).access_rule =\ lambda state: state.has(ItemName.GrabBack_K, self.player) # Set Number Traders # The first 8 are considered cheap enough to grind for in ACDC. Protip: Try grinding in the tank - self.multiworld.get_location(LocationName.Numberman_Code_09, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_09).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_10, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_10).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_11, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_11).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_12, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_12).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_13, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_13).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_14, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_14).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_15, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_15).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_16, self.player).access_rule = \ + self.get_location(LocationName.Numberman_Code_16).access_rule = \ lambda state: self.explore_score(state) > 2 - self.multiworld.get_location(LocationName.Numberman_Code_17, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_17).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_18, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_18).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_19, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_19).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_20, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_20).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_21, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_21).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_22, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_22).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_23, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_23).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_24, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_24).access_rule =\ lambda state: self.explore_score(state) > 4 - self.multiworld.get_location(LocationName.Numberman_Code_25, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_25).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_26, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_26).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_27, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_27).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_28, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_28).access_rule =\ lambda state: self.explore_score(state) > 8 - self.multiworld.get_location(LocationName.Numberman_Code_29, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_29).access_rule =\ lambda state: self.explore_score(state) > 10 - self.multiworld.get_location(LocationName.Numberman_Code_30, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_30).access_rule =\ lambda state: self.explore_score(state) > 10 - self.multiworld.get_location(LocationName.Numberman_Code_31, self.player).access_rule =\ + self.get_location(LocationName.Numberman_Code_31).access_rule =\ lambda state: self.explore_score(state) > 10 #miscellaneous locations with extra requirements - add_rule(self.multiworld.get_location(LocationName.Comedian, self.player), + add_rule(self.get_location(LocationName.Comedian), lambda state: state.has(ItemName.Humor, self.player)) - add_rule(self.multiworld.get_location(LocationName.Villain, self.player), + add_rule(self.get_location(LocationName.Villain), lambda state: state.has(ItemName.BlckMnd, self.player)) - def not_undernet(item): return item.code != item_table[ItemName.Progressive_Undernet_Rank].code or item.player != self.player - self.multiworld.get_location(LocationName.WWW_1_Central_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_1_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_2_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_2_Northwest_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_3_East_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_3_North_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_4_Northwest_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_4_Central_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Wall_BMD, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Control_Room_1_Screen, self.player).item_rule = not_undernet - self.multiworld.get_location(LocationName.WWW_Wilys_Desk, self.player).item_rule = not_undernet + forbid_item(self.get_location(LocationName.WWW_1_Central_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_1_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_2_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_2_Northwest_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_3_East_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_3_North_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_4_Northwest_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_4_Central_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Wall_BMD), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Control_Room_1_Screen), + ItemName.Progressive_Undernet_Rank, self.player) + forbid_item(self.get_location(LocationName.WWW_Wilys_Desk), + ItemName.Progressive_Undernet_Rank, self.player) + + # I have no fuckin clue why this specific location shits the bed on a progressive undernet rank. + # If you ever figure it out I will buy you a pizza. + forbid_item(self.get_location(LocationName.Chocolate_Shop_07), + ItemName.Progressive_Undernet_Rank, self.player) # place "Victory" at "Final Boss" and set collection as win condition - self.multiworld.get_location(LocationName.Alpha_Defeated, self.player) \ + self.get_location(LocationName.Alpha_Defeated) \ .place_locked_item(self.create_event(ItemName.Victory)) self.multiworld.completion_condition[self.player] = \ lambda state: state.has(ItemName.Victory, self.player) diff --git a/worlds/mmbn3/data/bn3-ap-patch.bsdiff b/worlds/mmbn3/data/bn3-ap-patch.bsdiff index d55fecad8064..43ace91bcd02 100644 Binary files a/worlds/mmbn3/data/bn3-ap-patch.bsdiff and b/worlds/mmbn3/data/bn3-ap-patch.bsdiff differ diff --git a/worlds/musedash/MuseDashCollection.py b/worlds/musedash/MuseDashCollection.py index 96a506f2fa2a..2a9f56750e8a 100644 --- a/worlds/musedash/MuseDashCollection.py +++ b/worlds/musedash/MuseDashCollection.py @@ -36,6 +36,8 @@ class MuseDashCollections: "Yume Ou Mono Yo Secret", "Echo over you... Secret", "Tsukuyomi Ni Naru Replaced", + "Heart Message feat. Aoi Tokimori Secret", + "Meow Rock feat. Chun Ge, Yuan Shen", ] song_items = SONG_DATA diff --git a/worlds/musedash/MuseDashData.py b/worlds/musedash/MuseDashData.py index 71d69eecb58d..bcb4ab8e2a78 100644 --- a/worlds/musedash/MuseDashData.py +++ b/worlds/musedash/MuseDashData.py @@ -627,10 +627,31 @@ "Sharp Bubbles": SongData(2900751, "83-3", "Cosmic Radio 2024", True, 7, 9, 11), "Replay": SongData(2900752, "83-4", "Cosmic Radio 2024", True, 5, 7, 9), "Cosmic Dusty Girl": SongData(2900753, "83-5", "Cosmic Radio 2024", True, 5, 7, 9), - "Meow Rock feat. Chun Ge, Yuan Shen": SongData(2900754, "84-0", "Muse Dash Legend", True, None, None, None), - "Even if you make an old radio song with AI": SongData(2900755, "84-1", "Muse Dash Legend", False, 3, 6, 8), - "Unusual Sketchbook": SongData(2900756, "84-2", "Muse Dash Legend", True, 6, 8, 11), - "TransientTears": SongData(2900757, "84-3", "Muse Dash Legend", True, 6, 8, 11), - "SHOOTING*STAR": SongData(2900758, "84-4", "Muse Dash Legend", False, 5, 7, 9), - "But the Blue Bird is Already Dead": SongData(2900759, "84-5", "Muse Dash Legend", False, 6, 8, 10), + "Meow Rock feat. Chun Ge, Yuan Shen": SongData(2900754, "84-0", "Muse Dash・Legend", True, None, None, None), + "Even if you make an old radio song with AI": SongData(2900755, "84-1", "Muse Dash・Legend", False, 3, 6, 8), + "Unusual Sketchbook": SongData(2900756, "84-2", "Muse Dash・Legend", True, 6, 8, 11), + "TransientTears": SongData(2900757, "84-3", "Muse Dash・Legend", True, 6, 8, 11), + "SHOOTING*STAR": SongData(2900758, "84-4", "Muse Dash・Legend", False, 5, 7, 9), + "But the Blue Bird is Already Dead": SongData(2900759, "84-5", "Muse Dash・Legend", False, 6, 8, 10), + "Heart Message feat. Aoi Tokimori Secret": SongData(2900760, "0-57", "Default Music", True, None, 7, 10), + "Heart Message feat. Aoi Tokimori": SongData(2900761, "0-58", "Default Music", True, 1, 3, 6), + "Aventyr": SongData(2900762, "85-0", "Happy Otaku Pack Vol.20", True, 4, 7, 10), + "Raintain": SongData(2900763, "85-1", "Happy Otaku Pack Vol.20", False, 6, 8, 10), + "Piercing the Clouds and Waves": SongData(2900764, "85-2", "Happy Otaku Pack Vol.20", True, 3, 6, 8), + "Save Yourself": SongData(2900765, "85-3", "Happy Otaku Pack Vol.20", True, 5, 7, 10), + "Menace": SongData(2900766, "85-4", "Happy Otaku Pack Vol.20", True, 7, 9, 11), + "Dangling": SongData(2900767, "85-5", "Happy Otaku Pack Vol.20", True, 6, 8, 10), + "Inverted World": SongData(2900768, "86-0", "Aquaria Cruising Guide", True, 4, 6, 8), + "Suito": SongData(2900769, "86-1", "Aquaria Cruising Guide", True, 6, 8, 11), + "The Promised Land": SongData(2900770, "86-2", "Aquaria Cruising Guide", True, 4, 6, 9), + "Alfheim's faith": SongData(2900771, "86-3", "Aquaria Cruising Guide", True, 6, 8, 11), + "Heaven's Cage": SongData(2900772, "86-4", "Aquaria Cruising Guide", True, 5, 7, 10), + "Broomstick adventure!": SongData(2900773, "86-5", "Aquaria Cruising Guide", True, 7, 9, 11), + "Strong Nurse Buro-chan!": SongData(2900774, "43-61", "MD Plus Project", True, 5, 7, 9), + "Cubism": SongData(2900775, "43-62", "MD Plus Project", False, 5, 7, 9), + "Cubibibibism": SongData(2900776, "43-63", "MD Plus Project", False, 6, 8, 10), + "LET'S TOAST!!": SongData(2900777, "43-64", "MD Plus Project", False, 6, 8, 10), + "#YamiKawa": SongData(2900778, "43-65", "MD Plus Project", False, 5, 7, 10), + "Rainy Step": SongData(2900779, "43-66", "MD Plus Project", False, 2, 5, 8), + "OHOSHIKATSU": SongData(2900780, "43-67", "MD Plus Project", False, 5, 7, 10), } diff --git a/worlds/noita/__init__.py b/worlds/noita/__init__.py index af2921768d6a..a0b94458c205 100644 --- a/worlds/noita/__init__.py +++ b/worlds/noita/__init__.py @@ -38,7 +38,7 @@ class NoitaWorld(World): web = NoitaWeb() def generate_early(self) -> None: - if not self.multiworld.get_player_name(self.player).isascii(): + if not self.player_name.isascii(): raise Exception("Noita yaml's slot name has invalid character(s).") # Returned items will be sent over to the client diff --git a/worlds/noita/events.py b/worlds/noita/events.py index 4ec04e98b457..2ae524d9ec87 100644 --- a/worlds/noita/events.py +++ b/worlds/noita/events.py @@ -1,4 +1,4 @@ -from typing import Dict, TYPE_CHECKING +from typing import TYPE_CHECKING from BaseClasses import Item, ItemClassification, Location, Region from . import items, locations @@ -6,7 +6,7 @@ from . import NoitaWorld -def create_event(player: int, name: str) -> Item: +def create_event_item(player: int, name: str) -> Item: return items.NoitaItem(name, ItemClassification.progression, None, player) @@ -16,13 +16,13 @@ def create_location(player: int, name: str, region: Region) -> Location: def create_locked_location_event(player: int, region: Region, item: str) -> Location: new_location = create_location(player, item, region) - new_location.place_locked_item(create_event(player, item)) + new_location.place_locked_item(create_event_item(player, item)) region.locations.append(new_location) return new_location -def create_all_events(world: "NoitaWorld", created_regions: Dict[str, Region]) -> None: +def create_all_events(world: "NoitaWorld", created_regions: dict[str, Region]) -> None: for region_name, event in event_locks.items(): region = created_regions[region_name] create_locked_location_event(world.player, region, event) @@ -31,7 +31,7 @@ def create_all_events(world: "NoitaWorld", created_regions: Dict[str, Region]) - # Maps region names to event names -event_locks: Dict[str, str] = { +event_locks: dict[str, str] = { "The Work": "Victory", "Mines": "Portal to Holy Mountain 1", "Coal Pits": "Portal to Holy Mountain 2", diff --git a/worlds/noita/items.py b/worlds/noita/items.py index 20d9ff1930de..4cd0b5ef87ff 100644 --- a/worlds/noita/items.py +++ b/worlds/noita/items.py @@ -1,6 +1,6 @@ import itertools from collections import Counter -from typing import Dict, List, NamedTuple, Set, TYPE_CHECKING +from typing import NamedTuple, TYPE_CHECKING from BaseClasses import Item, ItemClassification from .options import BossesAsChecks, VictoryCondition, ExtraOrbs @@ -27,12 +27,12 @@ def create_item(player: int, name: str) -> Item: return NoitaItem(name, item_data.classification, item_data.code, player) -def create_fixed_item_pool() -> List[str]: - required_items: Dict[str, int] = {name: data.required_num for name, data in item_table.items()} +def create_fixed_item_pool() -> list[str]: + required_items: dict[str, int] = {name: data.required_num for name, data in item_table.items()} return list(Counter(required_items).elements()) -def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) -> List[str]: +def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) -> list[str]: orb_count = extra_orbs.value if victory_condition == VictoryCondition.option_pure_ending: orb_count = orb_count + 11 @@ -41,15 +41,15 @@ def create_orb_items(victory_condition: VictoryCondition, extra_orbs: ExtraOrbs) return ["Orb" for _ in range(orb_count)] -def create_spatial_awareness_item(bosses_as_checks: BossesAsChecks) -> List[str]: +def create_spatial_awareness_item(bosses_as_checks: BossesAsChecks) -> list[str]: return ["Spatial Awareness Perk"] if bosses_as_checks.value >= BossesAsChecks.option_all_bosses else [] -def create_kantele(victory_condition: VictoryCondition) -> List[str]: +def create_kantele(victory_condition: VictoryCondition) -> list[str]: return ["Kantele"] if victory_condition.value >= VictoryCondition.option_pure_ending else [] -def create_random_items(world: NoitaWorld, weights: Dict[str, int], count: int) -> List[str]: +def create_random_items(world: NoitaWorld, weights: dict[str, int], count: int) -> list[str]: filler_pool = weights.copy() if not world.options.bad_effects: filler_pool["Trap"] = 0 @@ -87,7 +87,7 @@ def create_all_items(world: NoitaWorld) -> None: # 110000 - 110032 -item_table: Dict[str, ItemData] = { +item_table: dict[str, ItemData] = { "Trap": ItemData(110000, "Traps", ItemClassification.trap), "Extra Max HP": ItemData(110001, "Pickups", ItemClassification.useful), "Spell Refresher": ItemData(110002, "Pickups", ItemClassification.filler), @@ -122,7 +122,7 @@ def create_all_items(world: NoitaWorld) -> None: "Broken Wand": ItemData(110031, "Items", ItemClassification.filler), } -shop_only_filler_weights: Dict[str, int] = { +shop_only_filler_weights: dict[str, int] = { "Trap": 15, "Extra Max HP": 25, "Spell Refresher": 20, @@ -135,7 +135,7 @@ def create_all_items(world: NoitaWorld) -> None: "Extra Life Perk": 10, } -filler_weights: Dict[str, int] = { +filler_weights: dict[str, int] = { **shop_only_filler_weights, "Gold (200)": 15, "Gold (1000)": 6, @@ -152,22 +152,10 @@ def create_all_items(world: NoitaWorld) -> None: } -# These helper functions make the comprehensions below more readable -def get_item_group(item_name: str) -> str: - return item_table[item_name].group +filler_items: list[str] = list(filter(lambda item: item_table[item].classification == ItemClassification.filler, + item_table.keys())) +item_name_to_id: dict[str, int] = {name: data.code for name, data in item_table.items()} - -def item_is_filler(item_name: str) -> bool: - return item_table[item_name].classification == ItemClassification.filler - - -def item_is_perk(item_name: str) -> bool: - return item_table[item_name].group == "Perks" - - -filler_items: List[str] = list(filter(item_is_filler, item_table.keys())) -item_name_to_id: Dict[str, int] = {name: data.code for name, data in item_table.items()} - -item_name_groups: Dict[str, Set[str]] = { - group: set(item_names) for group, item_names in itertools.groupby(item_table, get_item_group) +item_name_groups: dict[str, set[str]] = { + group: set(item_names) for group, item_names in itertools.groupby(item_table, lambda item: item_table[item].group) } diff --git a/worlds/noita/locations.py b/worlds/noita/locations.py index 5dd87b5b0387..319955769ad0 100644 --- a/worlds/noita/locations.py +++ b/worlds/noita/locations.py @@ -1,6 +1,6 @@ # Locations are specific points that you would obtain an item at. from enum import IntEnum -from typing import Dict, NamedTuple, Optional, Set +from typing import NamedTuple from BaseClasses import Location @@ -27,7 +27,7 @@ class LocationFlag(IntEnum): # Only the first Hidden Chest and Pedestal are mapped here, the others are created in Regions. # ltype key: "Chest" = Hidden Chests, "Pedestal" = Pedestals, "Boss" = Boss, "Orb" = Orb. # 110000-110671 -location_region_mapping: Dict[str, Dict[str, LocationData]] = { +location_region_mapping: dict[str, dict[str, LocationData]] = { "Coal Pits Holy Mountain": { "Coal Pits Holy Mountain Shop Item 1": LocationData(110000), "Coal Pits Holy Mountain Shop Item 2": LocationData(110001), @@ -207,15 +207,15 @@ class LocationFlag(IntEnum): } -def make_location_range(location_name: str, base_id: int, amt: int) -> Dict[str, int]: +def make_location_range(location_name: str, base_id: int, amt: int) -> dict[str, int]: if amt == 1: return {location_name: base_id} return {f"{location_name} {i+1}": base_id + i for i in range(amt)} -location_name_groups: Dict[str, Set[str]] = {"Shop": set(), "Orb": set(), "Boss": set(), "Chest": set(), +location_name_groups: dict[str, set[str]] = {"Shop": set(), "Orb": set(), "Boss": set(), "Chest": set(), "Pedestal": set()} -location_name_to_id: Dict[str, int] = {} +location_name_to_id: dict[str, int] = {} for region_name, location_group in location_region_mapping.items(): diff --git a/worlds/noita/regions.py b/worlds/noita/regions.py index 184cd96018cf..55a0ad1fc8e1 100644 --- a/worlds/noita/regions.py +++ b/worlds/noita/regions.py @@ -1,5 +1,5 @@ # Regions are areas in your game that you travel to. -from typing import Dict, List, TYPE_CHECKING +from typing import TYPE_CHECKING from BaseClasses import Entrance, Region from . import locations @@ -36,28 +36,21 @@ def create_region(world: "NoitaWorld", region_name: str) -> Region: return new_region -def create_regions(world: "NoitaWorld") -> Dict[str, Region]: +def create_regions(world: "NoitaWorld") -> dict[str, Region]: return {name: create_region(world, name) for name in noita_regions} -# An "Entrance" is really just a connection between two regions -def create_entrance(player: int, source: str, destination: str, regions: Dict[str, Region]) -> Entrance: - entrance = Entrance(player, f"From {source} To {destination}", regions[source]) - entrance.connect(regions[destination]) - return entrance - - # Creates connections based on our access mapping in `noita_connections`. -def create_connections(player: int, regions: Dict[str, Region]) -> None: +def create_connections(regions: dict[str, Region]) -> None: for source, destinations in noita_connections.items(): - new_entrances = [create_entrance(player, source, destination, regions) for destination in destinations] - regions[source].exits = new_entrances + for destination in destinations: + regions[source].connect(regions[destination]) # Creates all regions and connections. Called from NoitaWorld. def create_all_regions_and_connections(world: "NoitaWorld") -> None: created_regions = create_regions(world) - create_connections(world.player, created_regions) + create_connections(created_regions) create_all_events(world, created_regions) world.multiworld.regions += created_regions.values() @@ -75,7 +68,7 @@ def create_all_regions_and_connections(world: "NoitaWorld") -> None: # - Lake is connected to The Laboratory, since the bosses are hard without specific set-ups (which means late game) # - Snowy Depths connects to Lava Lake orb since you need digging for it, so fairly early is acceptable # - Ancient Laboratory is connected to the Coal Pits, so that Ylialkemisti isn't sphere 1 -noita_connections: Dict[str, List[str]] = { +noita_connections: dict[str, list[str]] = { "Menu": ["Forest"], "Forest": ["Mines", "Floating Island", "Desert", "Snowy Wasteland"], "Frozen Vault": ["The Vault"], @@ -117,4 +110,4 @@ def create_all_regions_and_connections(world: "NoitaWorld") -> None: ### } -noita_regions: List[str] = sorted(set(noita_connections.keys()).union(*noita_connections.values())) +noita_regions: list[str] = sorted(set(noita_connections.keys()).union(*noita_connections.values())) diff --git a/worlds/noita/rules.py b/worlds/noita/rules.py index 65871a804ea0..c2c483248804 100644 --- a/worlds/noita/rules.py +++ b/worlds/noita/rules.py @@ -1,6 +1,5 @@ -from typing import List, NamedTuple, Set, TYPE_CHECKING +from typing import NamedTuple, TYPE_CHECKING -from BaseClasses import CollectionState from . import items, locations from .options import BossesAsChecks, VictoryCondition from worlds.generic import Rules as GenericRules @@ -16,7 +15,7 @@ class EntranceLock(NamedTuple): items_needed: int -entrance_locks: List[EntranceLock] = [ +entrance_locks: list[EntranceLock] = [ EntranceLock("Mines", "Coal Pits Holy Mountain", "Portal to Holy Mountain 1", 1), EntranceLock("Coal Pits", "Snowy Depths Holy Mountain", "Portal to Holy Mountain 2", 2), EntranceLock("Snowy Depths", "Hiisi Base Holy Mountain", "Portal to Holy Mountain 3", 3), @@ -27,7 +26,7 @@ class EntranceLock(NamedTuple): ] -holy_mountain_regions: List[str] = [ +holy_mountain_regions: list[str] = [ "Coal Pits Holy Mountain", "Snowy Depths Holy Mountain", "Hiisi Base Holy Mountain", @@ -38,7 +37,7 @@ class EntranceLock(NamedTuple): ] -wand_tiers: List[str] = [ +wand_tiers: list[str] = [ "Wand (Tier 1)", # Coal Pits "Wand (Tier 2)", # Snowy Depths "Wand (Tier 3)", # Hiisi Base @@ -48,29 +47,21 @@ class EntranceLock(NamedTuple): ] -items_hidden_from_shops: Set[str] = {"Gold (200)", "Gold (1000)", "Potion", "Random Potion", "Secret Potion", +items_hidden_from_shops: set[str] = {"Gold (200)", "Gold (1000)", "Potion", "Random Potion", "Secret Potion", "Chaos Die", "Greed Die", "Kammi", "Refreshing Gourd", "Sädekivi", "Broken Wand", "Powder Pouch"} -perk_list: List[str] = list(filter(items.item_is_perk, items.item_table.keys())) +perk_list: list[str] = list(filter(lambda item: items.item_table[item].group == "Perks", items.item_table.keys())) # ---------------- -# Helper Functions +# Helper Function # ---------------- -def has_perk_count(state: CollectionState, player: int, amount: int) -> bool: - return sum(state.count(perk, player) for perk in perk_list) >= amount - - -def has_orb_count(state: CollectionState, player: int, amount: int) -> bool: - return state.count("Orb", player) >= amount - - -def forbid_items_at_locations(world: "NoitaWorld", shop_locations: Set[str], forbidden_items: Set[str]) -> None: +def forbid_items_at_locations(world: "NoitaWorld", shop_locations: set[str], forbidden_items: set[str]) -> None: for shop_location in shop_locations: - location = world.multiworld.get_location(shop_location, world.player) + location = world.get_location(shop_location) GenericRules.forbid_items_for_player(location, forbidden_items, world.player) @@ -104,38 +95,38 @@ def ban_early_high_tier_wands(world: "NoitaWorld") -> None: def lock_holy_mountains_into_spheres(world: "NoitaWorld") -> None: for lock in entrance_locks: - location = world.multiworld.get_entrance(f"From {lock.source} To {lock.destination}", world.player) + location = world.get_entrance(f"{lock.source} -> {lock.destination}") GenericRules.set_rule(location, lambda state, evt=lock.event: state.has(evt, world.player)) def holy_mountain_unlock_conditions(world: "NoitaWorld") -> None: victory_condition = world.options.victory_condition.value for lock in entrance_locks: - location = world.multiworld.get_location(lock.event, world.player) + location = world.get_location(lock.event) if victory_condition == VictoryCondition.option_greed_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) + state.has_group_unique("Perks", world.player, items_needed // 2) ) elif victory_condition == VictoryCondition.option_pure_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) and - has_orb_count(state, world.player, items_needed) + state.has_group_unique("Perks", world.player, items_needed // 2) and + state.has("Orb", world.player, items_needed) ) elif victory_condition == VictoryCondition.option_peaceful_ending: location.access_rule = lambda state, items_needed=lock.items_needed: ( - has_perk_count(state, world.player, items_needed//2) and - has_orb_count(state, world.player, items_needed * 3) + state.has_group_unique("Perks", world.player, items_needed // 2) and + state.has("Orb", world.player, items_needed * 3) ) def biome_unlock_conditions(world: "NoitaWorld") -> None: - lukki_entrances = world.multiworld.get_region("Lukki Lair", world.player).entrances - magical_entrances = world.multiworld.get_region("Magical Temple", world.player).entrances - wizard_entrances = world.multiworld.get_region("Wizards' Den", world.player).entrances + lukki_entrances = world.get_region("Lukki Lair").entrances + magical_entrances = world.get_region("Magical Temple").entrances + wizard_entrances = world.get_region("Wizards' Den").entrances for entrance in lukki_entrances: - entrance.access_rule = lambda state: state.has("Melee Immunity Perk", world.player) and\ - state.has("All-Seeing Eye Perk", world.player) + entrance.access_rule = lambda state: ( + state.has_all(("Melee Immunity Perk", "All-Seeing Eye Perk"), world.player)) for entrance in magical_entrances: entrance.access_rule = lambda state: state.has("All-Seeing Eye Perk", world.player) for entrance in wizard_entrances: @@ -144,12 +135,12 @@ def biome_unlock_conditions(world: "NoitaWorld") -> None: def victory_unlock_conditions(world: "NoitaWorld") -> None: victory_condition = world.options.victory_condition.value - victory_location = world.multiworld.get_location("Victory", world.player) + victory_location = world.get_location("Victory") if victory_condition == VictoryCondition.option_pure_ending: - victory_location.access_rule = lambda state: has_orb_count(state, world.player, 11) + victory_location.access_rule = lambda state: state.has("Orb", world.player, 11) elif victory_condition == VictoryCondition.option_peaceful_ending: - victory_location.access_rule = lambda state: has_orb_count(state, world.player, 33) + victory_location.access_rule = lambda state: state.has("Orb", world.player, 33) # ---------------- @@ -168,5 +159,5 @@ def create_all_rules(world: "NoitaWorld") -> None: # Prevent the Map perk (used to find Toveri) from being on Toveri (boss) if world.options.bosses_as_checks.value >= BossesAsChecks.option_all_bosses: - toveri = world.multiworld.get_location("Toveri", world.player) + toveri = world.get_location("Toveri") GenericRules.forbid_items_for_player(toveri, {"Spatial Awareness Perk"}, world.player) diff --git a/worlds/oot/Patches.py b/worlds/oot/Patches.py index cd940e052a2b..db7be3d4ddc5 100644 --- a/worlds/oot/Patches.py +++ b/worlds/oot/Patches.py @@ -38,6 +38,7 @@ class OoTContainer(APPatch): game: str = 'Ocarina of Time' + patch_file_ending = ".apz5" def __init__(self, patch_data: bytes, base_path: str, output_directory: str, player = None, player_name: str = "", server: str = ""): diff --git a/worlds/oot/__init__.py b/worlds/oot/__init__.py index 136439ee96f2..ed025f49719c 100644 --- a/worlds/oot/__init__.py +++ b/worlds/oot/__init__.py @@ -30,9 +30,8 @@ from .N64Patch import create_patch_file from .Cosmetics import patch_cosmetics -from settings import get_settings from BaseClasses import MultiWorld, CollectionState, Tutorial, LocationProgressType -from Options import Range, Toggle, VerifyKeys, Accessibility, PlandoConnections +from Options import Range, Toggle, VerifyKeys, Accessibility, PlandoConnections, PlandoItems from Fill import fill_restrictive, fast_fill, FillError from worlds.generic.Rules import exclusion_rules, add_item_rule from worlds.AutoWorld import World, AutoLogicRegister, WebWorld @@ -203,7 +202,8 @@ def __init__(self, world, player): @classmethod def stage_assert_generate(cls, multiworld: MultiWorld): - rom = Rom(file=get_settings()['oot_options']['rom_file']) + oot_settings = OOTWorld.settings + rom = Rom(file=oot_settings.rom_file) # Option parsing, handling incompatible options, building useful-item table @@ -220,6 +220,8 @@ def generate_early(self): option_value = result.value elif isinstance(result, PlandoConnections): option_value = result.value + elif isinstance(result, PlandoItems): + option_value = result.value else: option_value = result.current_key setattr(self, option_name, option_value) @@ -1087,7 +1089,8 @@ def generate_output(self, output_directory: str): self.hint_rng = self.random outfile_name = self.multiworld.get_out_file_name_base(self.player) - rom = Rom(file=get_settings()['oot_options']['rom_file']) + oot_settings = OOTWorld.settings + rom = Rom(file=oot_settings.rom_file) try: if self.hints != 'none': buildWorldGossipHints(self) diff --git a/worlds/oot/docs/setup_de.md b/worlds/oot/docs/setup_de.md index 92c3150a7d2f..c35dd2769f1a 100644 --- a/worlds/oot/docs/setup_de.md +++ b/worlds/oot/docs/setup_de.md @@ -7,13 +7,13 @@ Da wir BizHawk benutzen, gilt diese Anleitung nur für Windows und Linux. ## Benötigte Software - BizHawk: [BizHawk Veröffentlichungen von TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Version 2.3.1 und später werden unterstützt. Version 2.9 ist empfohlen. + - Version 2.3.1 und später werden unterstützt. Version 2.10 ist empfohlen. - Detailierte Installtionsanweisungen für BizHawk können über den obrigen Link gefunden werden. - Windows-Benutzer müssen die Prerequisiten installiert haben. Diese können ebenfalls über den obrigen Link gefunden werden. - Der integrierte Archipelago-Client, welcher [hier](https://github.com/ArchipelagoMW/Archipelago/releases) installiert werden kann. -- Eine `Ocarina of Time v1.0 US(?) ROM`. (Nicht aus Europa und keine Master-Quest oder Debug-Rom!) +- Eine `Ocarina of Time v1.0 US ROM`. (Nicht aus Europa und keine Master-Quest oder Debug-Rom!) ## Konfigurieren von BizHawk diff --git a/worlds/oot/docs/setup_en.md b/worlds/oot/docs/setup_en.md index 553f1820c3ea..31b7137bd8b1 100644 --- a/worlds/oot/docs/setup_en.md +++ b/worlds/oot/docs/setup_en.md @@ -7,11 +7,11 @@ As we are using BizHawk, this guide is only applicable to Windows and Linux syst ## Required Software - BizHawk: [BizHawk Releases from TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Version 2.3.1 and later are supported. Version 2.7 is recommended for stability. + - Version 2.3.1 and later are supported. Version 2.10 is recommended for stability. - Detailed installation instructions for BizHawk can be found at the above link. - Windows users must run the prereq installer first, which can also be found at the above link. - The built-in Archipelago client, which can be installed [here](https://github.com/ArchipelagoMW/Archipelago/releases). -- An Ocarina of Time v1.0 ROM. +- A US Ocarina of Time v1.0 ROM. ## Configuring BizHawk diff --git a/worlds/oot/docs/setup_fr.md b/worlds/oot/docs/setup_fr.md index 40b0e8f571df..eb2e97384afa 100644 --- a/worlds/oot/docs/setup_fr.md +++ b/worlds/oot/docs/setup_fr.md @@ -7,12 +7,12 @@ Comme nous utilisons BizHawk, ce guide s'applique uniquement aux systèmes Windo ## Logiciel requis - BizHawk : [Sorties BizHawk de TASVideos](https://tasvideos.org/BizHawk/ReleaseHistory) - - Les versions 2.3.1 et ultérieures sont prises en charge. La version 2.7 est recommandée pour des raisons de stabilité. + - Les versions 2.3.1 et ultérieures sont prises en charge. La version 2.10 est recommandée pour des raisons de stabilité. - Des instructions d'installation détaillées pour BizHawk peuvent être trouvées sur le lien ci-dessus. - Les utilisateurs Windows doivent d'abord exécuter le programme d'installation des prérequis, qui peut également être trouvé sur le lien ci-dessus. - Le client Archipelago intégré, qui peut être installé [ici](https://github.com/ArchipelagoMW/Archipelago/releases) (sélectionnez « Ocarina of Time Client » lors de l'installation). -- Une ROM Ocarina of Time v1.0. +- Un fichier ROM v1.0 US d'Ocarina of Time. ## Configuration de BizHawk diff --git a/worlds/osrs/Items.py b/worlds/osrs/Items.py index 0679c964e772..248544aa15e6 100644 --- a/worlds/osrs/Items.py +++ b/worlds/osrs/Items.py @@ -62,7 +62,7 @@ class OSRSItem(Item): ItemNames.South_Of_Varrock, ItemNames.Central_Varrock, ItemNames.Varrock_Palace, - ItemNames.East_Of_Varrock, + ItemNames.Lumberyard, ItemNames.West_Varrock, ItemNames.Edgeville, ItemNames.Barbarian_Village, diff --git a/worlds/osrs/LogicCSV/LogicCSVToPython.py b/worlds/osrs/LogicCSV/LogicCSVToPython.py index ed8bd8172a01..b66f53cc9db5 100644 --- a/worlds/osrs/LogicCSV/LogicCSVToPython.py +++ b/worlds/osrs/LogicCSV/LogicCSVToPython.py @@ -8,7 +8,9 @@ # The CSVs are updated at this repository to be shared between generator and client. data_repository_address = "https://raw.githubusercontent.com/digiholic/osrs-archipelago-logic/" # The Github tag of the CSVs this was generated with -data_csv_tag = "v1.5" +data_csv_tag = "v2.0.4" +# If true, generate using file names in the repository +debug = False if __name__ == "__main__": import sys @@ -26,98 +28,167 @@ def load_location_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "locations_generated.py"), 'w+') as locPyFile: - locPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - locPyFile.write("from ..Locations import LocationRow, SkillRequirement\n") - locPyFile.write("\n") - locPyFile.write("location_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/locations.csv") as req: - locations_reader = csv.reader(req.text.splitlines()) - for row in locations_reader: - row_line = "LocationRow(" - row_line += str_format(row[0]) - row_line += str_format(row[1].lower()) - - region_strings = row[2].split(", ") if row[2] else [] - row_line += f"{str_list_to_py(region_strings)}, " - - skill_strings = row[3].split(", ") - row_line += "[" - if skill_strings: - split_skills = [skill.split(" ") for skill in skill_strings if skill != ""] - if split_skills: - for split in split_skills: - row_line += f"SkillRequirement('{split[0]}', {split[1]}), " - row_line += "], " - - item_strings = row[4].split(", ") if row[4] else [] - row_line += f"{str_list_to_py(item_strings)}, " - row_line += f"{row[5]})" if row[5] != "" else "0)" - locPyFile.write(f"\t{row_line},\n") - locPyFile.write("]\n") + with open(os.path.join(this_dir, "locations_generated.py"), 'w+') as loc_py_file: + loc_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + loc_py_file.write("from ..Locations import LocationRow, SkillRequirement\n") + loc_py_file.write("\n") + loc_py_file.write("location_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "locations.csv"), "r") as loc_file: + locations_reader = csv.reader(loc_file.read().splitlines()) + parse_loc_file(loc_py_file, locations_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/locations.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/locations.csv") as req: + if req.status_code == 200: + locations_reader = csv.reader(req.text.splitlines()) + parse_loc_file(loc_py_file, locations_reader) + else: + print(str(req.status_code) + ": " + req.reason) + loc_py_file.write("]\n") + + + def parse_loc_file(loc_py_file, locations_reader): + for row in locations_reader: + # Skip the header row, if present + if row[0] == "Location Name": + continue + row_line = "LocationRow(" + row_line += str_format(row[0]) + row_line += str_format(row[1].lower()) + + region_strings = row[2].split(", ") if row[2] else [] + row_line += f"{str_list_to_py(region_strings)}, " + + skill_strings = row[3].split(", ") + row_line += "[" + if skill_strings: + split_skills = [skill.split(" ") for skill in skill_strings if skill != ""] + if split_skills: + for split in split_skills: + row_line += f"SkillRequirement('{split[0]}', {split[1]}), " + row_line += "], " + + item_strings = row[4].split(", ") if row[4] else [] + row_line += f"{str_list_to_py(item_strings)}, " + row_line += f"{row[5]})" if row[5] != "" else "0)" + loc_py_file.write(f"\t{row_line},\n") + def load_region_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "regions_generated.py"), 'w+') as regPyFile: - regPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - regPyFile.write("from ..Regions import RegionRow\n") - regPyFile.write("\n") - regPyFile.write("region_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/regions.csv") as req: - regions_reader = csv.reader(req.text.splitlines()) - for row in regions_reader: - row_line = "RegionRow(" - row_line += str_format(row[0]) - row_line += str_format(row[1]) - connections = row[2].replace("'", "\\'") - row_line += f"{str_list_to_py(connections.split(', '))}, " - resources = row[3].replace("'", "\\'") - row_line += f"{str_list_to_py(resources.split(', '))})" - regPyFile.write(f"\t{row_line},\n") - regPyFile.write("]\n") + with open(os.path.join(this_dir, "regions_generated.py"), 'w+') as reg_py_file: + reg_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + reg_py_file.write("from ..Regions import RegionRow\n") + reg_py_file.write("\n") + reg_py_file.write("region_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "regions.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_region_file(reg_py_file, regions_reader) + else: + print("Loading: "+ data_repository_address + "/" + data_csv_tag + "/regions.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/regions.csv") as req: + if req.status_code == 200: + regions_reader = csv.reader(req.text.splitlines()) + parse_region_file(reg_py_file, regions_reader) + else: + print(str(req.status_code) + ": " + req.reason) + reg_py_file.write("]\n") + + + def parse_region_file(reg_py_file, regions_reader): + for row in regions_reader: + # Skip the header row, if present + if row[0] == "Region Name": + continue + + row_line = "RegionRow(" + row_line += str_format(row[0]) + row_line += str_format(row[1]) + connections = row[2] + row_line += f"{str_list_to_py(connections.split(', '))}, " + resources = row[3] + row_line += f"{str_list_to_py(resources.split(', '))})" + reg_py_file.write(f"\t{row_line},\n") + def load_resource_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "resources_generated.py"), 'w+') as resPyFile: - resPyFile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - resPyFile.write("from ..Regions import ResourceRow\n") - resPyFile.write("\n") - resPyFile.write("resource_rows = [\n") - - with requests.get(data_repository_address + "/" + data_csv_tag + "/resources.csv") as req: - resource_reader = csv.reader(req.text.splitlines()) - for row in resource_reader: - name = row[0].replace("'", "\\'") - row_line = f"ResourceRow('{name}')" - resPyFile.write(f"\t{row_line},\n") - resPyFile.write("]\n") + with open(os.path.join(this_dir, "resources_generated.py"), 'w+') as res_py_file: + res_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + res_py_file.write("from ..Regions import ResourceRow\n") + res_py_file.write("\n") + res_py_file.write("resource_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "resources.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_resources_file(res_py_file, regions_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/resources.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/resources.csv") as req: + if req.status_code == 200: + resource_reader = csv.reader(req.text.splitlines()) + parse_resources_file(res_py_file, resource_reader) + else: + print(str(req.status_code) + ": " + req.reason) + res_py_file.write("]\n") + + + def parse_resources_file(res_py_file, resource_reader): + for row in resource_reader: + # Skip the header row, if present + if row[0] == "Resource Name": + continue + + name = row[0].replace("'", "\\'") + row_line = f"ResourceRow('{name}')" + res_py_file.write(f"\t{row_line},\n") def load_item_csv(): this_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(this_dir, "items_generated.py"), 'w+') as itemPyfile: - itemPyfile.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') - itemPyfile.write("from BaseClasses import ItemClassification\n") - itemPyfile.write("from ..Items import ItemRow\n") - itemPyfile.write("\n") - itemPyfile.write("item_rows = [\n") + with open(os.path.join(this_dir, "items_generated.py"), 'w+') as item_py_file: + item_py_file.write('"""\nThis file was auto generated by LogicCSVToPython.py\n"""\n') + item_py_file.write("from BaseClasses import ItemClassification\n") + item_py_file.write("from ..Items import ItemRow\n") + item_py_file.write("\n") + item_py_file.write("item_rows = [\n") + + if debug: + with open(os.path.join(this_dir, "items.csv"), "r") as region_file: + regions_reader = csv.reader(region_file.read().splitlines()) + parse_item_file(item_py_file, regions_reader) + else: + print("Loading: " + data_repository_address + "/" + data_csv_tag + "/items.csv") + with requests.get(data_repository_address + "/" + data_csv_tag + "/items.csv") as req: + if req.status_code == 200: + item_reader = csv.reader(req.text.splitlines()) + parse_item_file(item_py_file, item_reader) + else: + print(str(req.status_code) + ": " + req.reason) + item_py_file.write("]\n") + + + def parse_item_file(item_py_file, item_reader): + for row in item_reader: + # Skip the header row, if present + if row[0] == "Name": + continue - with requests.get(data_repository_address + "/" + data_csv_tag + "/items.csv") as req: - item_reader = csv.reader(req.text.splitlines()) - for row in item_reader: - row_line = "ItemRow(" - row_line += str_format(row[0]) - row_line += f"{row[1]}, " + row_line = "ItemRow(" + row_line += str_format(row[0]) + row_line += f"{row[1]}, " - row_line += f"ItemClassification.{row[2]})" + row_line += f"ItemClassification.{row[2]})" - itemPyfile.write(f"\t{row_line},\n") - itemPyfile.write("]\n") + item_py_file.write(f"\t{row_line},\n") def str_format(s) -> str: @@ -128,7 +199,7 @@ def str_format(s) -> str: def str_list_to_py(str_list) -> str: ret_str = "[" for s in str_list: - ret_str += f"'{s}', " + ret_str += str_format(s) ret_str += "]" return ret_str diff --git a/worlds/osrs/LogicCSV/items_generated.py b/worlds/osrs/LogicCSV/items_generated.py index b5e610a6e3ab..3a277b8d5e4f 100644 --- a/worlds/osrs/LogicCSV/items_generated.py +++ b/worlds/osrs/LogicCSV/items_generated.py @@ -10,7 +10,7 @@ ItemRow('Area: HAM Hideout', 1, ItemClassification.progression), ItemRow('Area: Lumbridge Farms', 1, ItemClassification.progression), ItemRow('Area: South of Varrock', 1, ItemClassification.progression), - ItemRow('Area: East Varrock', 1, ItemClassification.progression), + ItemRow('Area: Lumberyard', 1, ItemClassification.progression), ItemRow('Area: Central Varrock', 1, ItemClassification.progression), ItemRow('Area: Varrock Palace', 1, ItemClassification.progression), ItemRow('Area: West Varrock', 1, ItemClassification.progression), @@ -37,7 +37,58 @@ ItemRow('Progressive Armor', 6, ItemClassification.progression), ItemRow('Progressive Weapons', 6, ItemClassification.progression), ItemRow('Progressive Tools', 6, ItemClassification.useful), - ItemRow('Progressive Ranged Weapons', 3, ItemClassification.useful), + ItemRow('Progressive Ranged Weapon', 3, ItemClassification.useful), ItemRow('Progressive Ranged Armor', 3, ItemClassification.useful), - ItemRow('Progressive Magic', 2, ItemClassification.useful), + ItemRow('Progressive Magic Spell', 2, ItemClassification.useful), + ItemRow('An Invitation to the Gielinor Games', 1, ItemClassification.filler), + ItemRow('Settled\'s Crossbow', 1, ItemClassification.filler), + ItemRow('The Stone of Jas', 1, ItemClassification.filler), + ItemRow('Nieve\'s Phone Number', 1, ItemClassification.filler), + ItemRow('Hannanie\'s Lost Sanity', 1, ItemClassification.filler), + ItemRow('XP Waste', 1, ItemClassification.filler), + ItemRow('Ten Free Pulls on the Squeal of Fortune', 1, ItemClassification.filler), + ItemRow('Project Zanaris Beta Invite', 1, ItemClassification.filler), + ItemRow('A Funny Feeling You Would Have Been Followed', 1, ItemClassification.filler), + ItemRow('An Ominous Prediction From Gnome Child', 1, ItemClassification.filler), + ItemRow('A Logic Error', 1, ItemClassification.filler), + ItemRow('The Warding Skill', 1, ItemClassification.filler), + ItemRow('A 1/2500 Chance At Your Very Own Pet Baron Sucellus, Redeemable at your Local Duke, Some Restrictions May Apply', 1, ItemClassification.filler), + ItemRow('A Suspicious Email From Iagex.com Asking for your Password', 1, ItemClassification.filler), + ItemRow('A Review on that Pull Request You\'ve Been Waiting On', 1, ItemClassification.filler), + ItemRow('Fifty Billion RS3 GP (Worthless)', 1, ItemClassification.filler), + ItemRow('Mod Ash\'s Coffee Cup', 1, ItemClassification.filler), + ItemRow('An Embarrasing Photo of Zammorak at the Christmas Party', 1, ItemClassification.filler), + ItemRow('Another Bug To Report', 1, ItemClassification.filler), + ItemRow('1-Up Mushroom', 1, ItemClassification.filler), + ItemRow('Empty White Hallways', 1, ItemClassification.filler), + ItemRow('Area: Menaphos', 1, ItemClassification.filler), + ItemRow('A Ratcatchers Dialogue Rewrite', 1, ItemClassification.filler), + ItemRow('"Nostalgia"', 1, ItemClassification.filler), + ItemRow('A Hornless Unicorn', 1, ItemClassification.filler), + ItemRow('The Ability To Use ::bank', 1, ItemClassification.filler), + ItemRow('Free Haircut at the Falador Hairdresser', 1, ItemClassification.filler), + ItemRow('Nothing Interesting Happens', 1, ItemClassification.filler), + ItemRow('Why Fletch?', 1, ItemClassification.filler), + ItemRow('Evolution of Combat', 1, ItemClassification.filler), + ItemRow('Care Pack: 10,000 GP', 1, ItemClassification.useful), + ItemRow('Care Pack: 90 Steel Nails', 1, ItemClassification.useful), + ItemRow('Care Pack: 25 Swordfish', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Lobsters', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Law Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 300 Each Elemental Rune', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Chaos Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Death Runes', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Oak Logs', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Willow Logs', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Bronze Bars', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Iron Ore', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Coal Ore', 1, ItemClassification.useful), + ItemRow('Care Pack: 100 Raw Trout', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Leather', 1, ItemClassification.useful), + ItemRow('Care Pack: 50 Energy Potion (4)', 2, ItemClassification.useful), + ItemRow('Care Pack: 200 Big Bones', 1, ItemClassification.useful), + ItemRow('Care Pack: 10 Each Uncut gems', 1, ItemClassification.useful), + ItemRow('Care Pack: 3 Rings of Forging', 1, ItemClassification.useful), + ItemRow('Care Pack: 500 Rune Essence', 1, ItemClassification.useful), + ItemRow('Care Pack: 200 Mind Runes', 1, ItemClassification.useful), ] diff --git a/worlds/osrs/LogicCSV/locations_generated.py b/worlds/osrs/LogicCSV/locations_generated.py index 2d617a7038fe..4c1cd0bdd893 100644 --- a/worlds/osrs/LogicCSV/locations_generated.py +++ b/worlds/osrs/LogicCSV/locations_generated.py @@ -19,37 +19,56 @@ LocationRow('Quest: Witch\'s Potion', 'quest', ['Rimmington', 'Port Sarim', ], [], [], 0), LocationRow('Quest: The Knight\'s Sword', 'quest', ['Falador', 'Varrock Palace', 'Mudskipper Point', 'South of Varrock', 'Windmill', 'Pie Dish', 'Port Sarim', ], [SkillRequirement('Cooking', 10), SkillRequirement('Mining', 10), ], [], 0), LocationRow('Quest: Goblin Diplomacy', 'quest', ['Goblin Village', 'Draynor Village', 'Falador', 'South of Varrock', 'Onion', ], [], [], 0), - LocationRow('Quest: Pirate\'s Treasure', 'quest', ['Port Sarim', 'Karamja', 'Falador', ], [], [], 0), + LocationRow('Quest: Pirate\'s Treasure', 'quest', ['Port Sarim', 'Karamja', 'Falador', 'Central Varrock', ], [], [], 0), LocationRow('Quest: Rune Mysteries', 'quest', ['Lumbridge', 'Wizard Tower', 'Central Varrock', ], [], [], 0), LocationRow('Quest: Misthalin Mystery', 'quest', ['Lumbridge Swamp', ], [], [], 0), LocationRow('Quest: The Corsair Curse', 'quest', ['Rimmington', 'Falador Farms', 'Corsair Cove', ], [], [], 0), LocationRow('Quest: X Marks the Spot', 'quest', ['Lumbridge', 'Draynor Village', 'Port Sarim', ], [], [], 0), LocationRow('Quest: Below Ice Mountain', 'quest', ['Dwarven Mines', 'Dwarven Mountain Pass', 'Ice Mountain', 'Barbarian Village', 'Falador', 'Central Varrock', 'Edgeville', ], [], [], 16), LocationRow('Quest: Dragon Slayer', 'goal', ['Crandor', 'South of Varrock', 'Edgeville', 'Lumbridge', 'Rimmington', 'Monastery', 'Dwarven Mines', 'Port Sarim', 'Draynor Village', ], [], [], 32), + LocationRow('Bury Some Big Bones', 'prayer', ['Big Bones', ], [SkillRequirement('Prayer', 1), ], [], 0), + LocationRow('Activate the "Sharp Eye" Prayer', 'prayer', [], [SkillRequirement('Prayer', 8), ], [], 0), LocationRow('Activate the "Rock Skin" Prayer', 'prayer', [], [SkillRequirement('Prayer', 10), ], [], 0), LocationRow('Activate the "Protect Item" Prayer', 'prayer', [], [SkillRequirement('Prayer', 25), ], [], 2), LocationRow('Pray at the Edgeville Monastery', 'prayer', ['Monastery', ], [SkillRequirement('Prayer', 31), ], [], 6), LocationRow('Cast Bones To Bananas', 'magic', ['Nature Runes', ], [SkillRequirement('Magic', 15), ], [], 0), + LocationRow('Cast Earth Strike', 'magic', [], [SkillRequirement('Magic', 9), ], [], 0), + LocationRow('Cast Curse', 'magic', [], [SkillRequirement('Magic', 19), ], [], 0), LocationRow('Teleport to Varrock', 'magic', ['Central Varrock', 'Law Runes', ], [SkillRequirement('Magic', 25), ], [], 0), - LocationRow('Teleport to Lumbridge', 'magic', ['Lumbridge', 'Law Runes', ], [SkillRequirement('Magic', 31), ], [], 2), + LocationRow('Teleport to Lumbridge', 'magic', ['Lumbridge', 'Law Runes', ], [SkillRequirement('Magic', 31), ], [], 0), + LocationRow('Telegrab a Gold Bar from the Varrock Bank', 'magic', ['Law Runes', 'West Varrock', ], [SkillRequirement('Magic', 33), ], [], 0), LocationRow('Teleport to Falador', 'magic', ['Falador', 'Law Runes', ], [SkillRequirement('Magic', 37), ], [], 6), LocationRow('Craft an Air Rune', 'runecraft', ['Rune Essence', 'Falador Farms', ], [SkillRequirement('Runecraft', 1), ], [], 0), + LocationRow('Craft a Mind Rune', 'runecraft', ['Rune Essence', 'Goblin Village', ], [SkillRequirement('Runecraft', 2), ], [], 0), + LocationRow('Craft a Water Rune', 'runecraft', ['Rune Essence', 'Lumbridge Swamp', ], [SkillRequirement('Runecraft', 5), ], [], 0), + LocationRow('Craft an Earth Rune', 'runecraft', ['Rune Essence', 'Lumberyard', ], [SkillRequirement('Runecraft', 9), ], [], 0), + LocationRow('Craft a Fire Rune', 'runecraft', ['Rune Essence', 'Al Kharid', ], [SkillRequirement('Runecraft', 14), ], [], 0), + LocationRow('Craft a Body Rune', 'runecraft', ['Rune Essence', 'Dwarven Mountain Pass', ], [SkillRequirement('Runecraft', 20), ], [], 0), LocationRow('Craft runes with a Mind Core', 'runecraft', ['Camdozaal', 'Goblin Village', ], [SkillRequirement('Runecraft', 2), ], [], 0), LocationRow('Craft runes with a Body Core', 'runecraft', ['Camdozaal', 'Dwarven Mountain Pass', ], [SkillRequirement('Runecraft', 20), ], [], 0), + LocationRow('Craft a Pot', 'crafting', ['Clay Ore', 'Barbarian Village', ], [SkillRequirement('Crafting', 1), ], [], 0), + LocationRow('Craft a pair of Leather Boots', 'crafting', ['Milk', 'Al Kharid', ], [SkillRequirement('Crafting', 7), ], [], 0), LocationRow('Make an Unblessed Symbol', 'crafting', ['Silver Ore', 'Furnace', 'Al Kharid', 'Sheep', 'Spinning Wheel', ], [SkillRequirement('Crafting', 16), ], [], 0), LocationRow('Cut a Sapphire', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 20), ], [], 0), LocationRow('Cut an Emerald', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 27), ], [], 0), LocationRow('Cut a Ruby', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 34), ], [], 4), + LocationRow('Enter the Crafting Guild', 'crafting', ['Crafting Guild', ], [SkillRequirement('Crafting', 40), ], [], 0), LocationRow('Cut a Diamond', 'crafting', ['Chisel', ], [SkillRequirement('Crafting', 43), ], [], 8), + LocationRow('Mine Copper', 'crafting', ['Bronze Ores', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Tin', 'crafting', ['Bronze Ores', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Clay', 'crafting', ['Clay Ore', ], [SkillRequirement('Mining', 1), ], [], 0), + LocationRow('Mine Iron', 'mining', ['Iron Ore', ], [SkillRequirement('Mining', 1), ], [], 0), LocationRow('Mine a Blurite Ore', 'mining', ['Mudskipper Point', 'Port Sarim', ], [SkillRequirement('Mining', 10), ], [], 0), LocationRow('Crush a Barronite Deposit', 'mining', ['Camdozaal', ], [SkillRequirement('Mining', 14), ], [], 0), LocationRow('Mine Silver', 'mining', ['Silver Ore', ], [SkillRequirement('Mining', 20), ], [], 0), LocationRow('Mine Coal', 'mining', ['Coal Ore', ], [SkillRequirement('Mining', 30), ], [], 2), LocationRow('Mine Gold', 'mining', ['Gold Ore', ], [SkillRequirement('Mining', 40), ], [], 6), + LocationRow('Smelt a Bronze Bar', 'smithing', ['Bronze Ores', 'Furnace', ], [SkillRequirement('Smithing', 1), SkillRequirement('Mining', 1), ], [], 0), LocationRow('Smelt an Iron Bar', 'smithing', ['Iron Ore', 'Furnace', ], [SkillRequirement('Smithing', 15), SkillRequirement('Mining', 15), ], [], 0), LocationRow('Smelt a Silver Bar', 'smithing', ['Silver Ore', 'Furnace', ], [SkillRequirement('Smithing', 20), SkillRequirement('Mining', 20), ], [], 0), LocationRow('Smelt a Steel Bar', 'smithing', ['Coal Ore', 'Iron Ore', 'Furnace', ], [SkillRequirement('Smithing', 30), SkillRequirement('Mining', 30), ], [], 2), LocationRow('Smelt a Gold Bar', 'smithing', ['Gold Ore', 'Furnace', ], [SkillRequirement('Smithing', 40), SkillRequirement('Mining', 40), ], [], 6), + LocationRow('Catch a Sardine', 'fishing', ['Shrimp Spot', ], [SkillRequirement('Fishing', 5), ], [], 0), LocationRow('Catch some Anchovies', 'fishing', ['Shrimp Spot', ], [SkillRequirement('Fishing', 15), ], [], 0), LocationRow('Catch a Trout', 'fishing', ['Fly Fishing Spot', ], [SkillRequirement('Fishing', 20), ], [], 0), LocationRow('Prepare a Tetra', 'fishing', ['Camdozaal', ], [SkillRequirement('Fishing', 33), SkillRequirement('Cooking', 33), ], [], 2), @@ -58,13 +77,16 @@ LocationRow('Bake a Redberry Pie', 'cooking', ['Redberry Bush', 'Wheat', 'Windmill', 'Pie Dish', ], [SkillRequirement('Cooking', 10), ], [], 0), LocationRow('Cook some Stew', 'cooking', ['Bowl', 'Meat', 'Potato', ], [SkillRequirement('Cooking', 25), ], [], 0), LocationRow('Bake an Apple Pie', 'cooking', ['Cooking Apple', 'Wheat', 'Windmill', 'Pie Dish', ], [SkillRequirement('Cooking', 32), ], [], 2), + LocationRow('Enter the Cook\'s Guild', 'cooking', ['Cook\'s Guild', ], [], [], 0), LocationRow('Bake a Cake', 'cooking', ['Wheat', 'Windmill', 'Egg', 'Milk', 'Cake Tin', ], [SkillRequirement('Cooking', 40), ], [], 6), LocationRow('Bake a Meat Pizza', 'cooking', ['Wheat', 'Windmill', 'Cheese', 'Tomato', 'Meat', ], [SkillRequirement('Cooking', 45), ], [], 8), + LocationRow('Burn a Log', 'firemaking', [], [SkillRequirement('Firemaking', 1), SkillRequirement('Woodcutting', 1), ], [], 0), LocationRow('Burn some Oak Logs', 'firemaking', ['Oak Tree', ], [SkillRequirement('Firemaking', 15), SkillRequirement('Woodcutting', 15), ], [], 0), LocationRow('Burn some Willow Logs', 'firemaking', ['Willow Tree', ], [SkillRequirement('Firemaking', 30), SkillRequirement('Woodcutting', 30), ], [], 0), LocationRow('Travel on a Canoe', 'woodcutting', ['Canoe Tree', ], [SkillRequirement('Woodcutting', 12), ], [], 0), LocationRow('Cut an Oak Log', 'woodcutting', ['Oak Tree', ], [SkillRequirement('Woodcutting', 15), ], [], 0), LocationRow('Cut a Willow Log', 'woodcutting', ['Willow Tree', ], [SkillRequirement('Woodcutting', 30), ], [], 0), + LocationRow('Kill a Duck', 'combat', ['Duck', ], [SkillRequirement('Combat', 1), ], [], 0), LocationRow('Kill Jeff', 'combat', ['Dwarven Mountain Pass', ], [SkillRequirement('Combat', 2), ], [], 0), LocationRow('Kill a Goblin', 'combat', ['Goblin', ], [SkillRequirement('Combat', 2), ], [], 0), LocationRow('Kill a Monkey', 'combat', ['Karamja', ], [SkillRequirement('Combat', 3), ], [], 0), @@ -81,19 +103,24 @@ LocationRow('Kill an Ogress Shaman', 'combat', ['Corsair Cove', ], [SkillRequirement('Combat', 82), ], [], 8), LocationRow('Kill Obor', 'combat', ['Edgeville', ], [SkillRequirement('Combat', 106), ], [], 28), LocationRow('Kill Bryophyta', 'combat', ['Central Varrock', ], [SkillRequirement('Combat', 128), ], [], 28), + LocationRow('Die', 'general', [], [], [], 0), + LocationRow('Reach a Level 10', 'general', [], [], [], 0), LocationRow('Total XP 5,000', 'general', [], [], [], 0), LocationRow('Combat Level 5', 'general', [], [], [], 0), LocationRow('Total XP 10,000', 'general', [], [], [], 0), LocationRow('Total Level 50', 'general', [], [], [], 0), + LocationRow('Reach a Level 20', 'general', [], [], [], 0), LocationRow('Total XP 25,000', 'general', [], [], [], 0), LocationRow('Total Level 100', 'general', [], [], [], 0), LocationRow('Total XP 50,000', 'general', [], [], [], 0), LocationRow('Combat Level 15', 'general', [], [], [], 0), LocationRow('Total Level 150', 'general', [], [], [], 2), + LocationRow('Reach a Level 30', 'general', [], [], [], 2), LocationRow('Total XP 75,000', 'general', [], [], [], 2), LocationRow('Combat Level 25', 'general', [], [], [], 2), LocationRow('Total XP 100,000', 'general', [], [], [], 6), LocationRow('Total Level 200', 'general', [], [], [], 6), + LocationRow('Reach a Level 40', 'general', [], [], [], 6), LocationRow('Total XP 125,000', 'general', [], [], [], 6), LocationRow('Combat Level 30', 'general', [], [], [], 10), LocationRow('Total Level 250', 'general', [], [], [], 10), @@ -103,6 +130,28 @@ LocationRow('Open a Simple Lockbox', 'general', ['Camdozaal', ], [], [], 0), LocationRow('Open an Elaborate Lockbox', 'general', ['Camdozaal', ], [], [], 0), LocationRow('Open an Ornate Lockbox', 'general', ['Camdozaal', ], [], [], 0), + LocationRow('Trans your Gender', 'general', ['Makeover', ], [], [], 0), + LocationRow('Read a Flyer from Ali the Leaflet Dropper', 'general', ['Al Kharid', 'South of Varrock', ], [], [], 0), + LocationRow('Cry by the Members Gate to Taverley', 'general', ['Dwarven Mountain Pass', ], [], [], 0), + LocationRow('Get Prompted to Buy Membership', 'general', [], [], [], 0), + LocationRow('Pet the Stray Dog in Varrock', 'general', ['Central Varrock', 'West Varrock', 'South of Varrock', ], [], [], 0), + LocationRow('Get Sent to Jail in Shantay Pass', 'general', ['Al Kharid', 'Port Sarim', ], [], [], 0), + LocationRow('Have the Apothecary Make a Strength Potion', 'general', ['Central Varrock', 'Red Spider Eggs', 'Limpwurt Root', ], [], [], 0), + LocationRow('Put a Whole Banana into a Bottle of Karamjan Rum', 'general', ['Karamja', ], [], [], 0), + LocationRow('Attempt to Shear "The Thing"', 'general', ['Lumbridge Farms West', ], [], [], 0), + LocationRow('Eat a Kebab', 'general', ['Al Kharid', ], [], [], 0), + LocationRow('Return a Beer Glass to a Bar', 'general', ['Falador', ], [], [], 0), + LocationRow('Enter the Varrock Bear Cage', 'general', ['Varrock Palace', ], [], [], 0), + LocationRow('Equip a Cabbage Cape', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Equip a Pride Scarf', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Visit the Black Hole', 'general', ['Draynor Village', 'Dwarven Mines', ], [], [], 0), + LocationRow('Try to Equip Goblin Mail', 'general', ['Goblin', ], [], [], 0), + LocationRow('Equip an Orange Cape', 'general', ['Draynor Village', ], [], [], 0), + LocationRow('Find a Needle in a Haystack', 'general', ['Haystack', ], [], [], 0), + LocationRow('Insult the Homeless (but not Charlie he\'s cool)', 'general', ['Central Varrock', 'South of Varrock', ], [], [], 0), + LocationRow('Dance with Party Pete', 'general', ['Falador', ], [], [], 0), + LocationRow('Read a Newspaper', 'general', ['Central Varrock', ], [], [], 0), + LocationRow('Add a Card to the Chronicle', 'general', ['Draynor Village', ], [], [], 0), LocationRow('Points: Cook\'s Assistant', 'points', [], [], [], 0), LocationRow('Points: Demon Slayer', 'points', [], [], [], 0), LocationRow('Points: The Restless Ghost', 'points', [], [], [], 0), diff --git a/worlds/osrs/LogicCSV/regions_generated.py b/worlds/osrs/LogicCSV/regions_generated.py index 87b3747d938e..512cd3b268d5 100644 --- a/worlds/osrs/LogicCSV/regions_generated.py +++ b/worlds/osrs/LogicCSV/regions_generated.py @@ -4,19 +4,19 @@ from ..Regions import RegionRow region_rows = [ - RegionRow('Lumbridge', 'Area: Lumbridge', ['Lumbridge Farms East', 'Lumbridge Farms West', 'Al Kharid', 'Lumbridge Swamp', 'HAM Hideout', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Mind Runes', 'Spinning Wheel', 'Furnace', 'Chisel', 'Bronze Anvil', 'Fly Fishing Spot', 'Bowl', 'Cake Tin', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Goblin', 'Imps', ]), - RegionRow('Lumbridge Swamp', 'Area: Lumbridge Swamp', ['Lumbridge', 'HAM Hideout', ], ['Bronze Ores', 'Coal Ore', 'Shrimp Spot', 'Meat', 'Goblin', 'Imps', ]), + RegionRow('Lumbridge', 'Area: Lumbridge', ['Lumbridge Farms East', 'Lumbridge Farms West', 'Al Kharid', 'Lumbridge Swamp', 'HAM Hideout', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Mind Runes', 'Spinning Wheel', 'Furnace', 'Chisel', 'Bronze Anvil', 'Fly Fishing Spot', 'Bowl', 'Cake Tin', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Goblin', 'Imps', 'Duck', 'Bar', ]), + RegionRow('Lumbridge Swamp', 'Area: Lumbridge Swamp', ['Lumbridge', 'HAM Hideout', ], ['Bronze Ores', 'Coal Ore', 'Shrimp Spot', 'Meat', 'Goblin', 'Imps', 'Big Bones', 'Duck', ]), RegionRow('HAM Hideout', 'Area: HAM Hideout', ['Lumbridge Farms West', 'Lumbridge', 'Lumbridge Swamp', 'Draynor Village', ], ['Goblin', ]), - RegionRow('Lumbridge Farms West', 'Area: Lumbridge Farms', ['Sourhog\'s Lair', 'HAM Hideout', 'Draynor Village', ], ['Sheep', 'Meat', 'Wheat', 'Windmill', 'Egg', 'Milk', 'Willow Tree', 'Imps', 'Potato', ]), + RegionRow('Lumbridge Farms West', 'Area: Lumbridge Farms', ['Sourhog\'s Lair', 'HAM Hideout', 'Draynor Village', ], ['Sheep', 'Meat', 'Wheat', 'Windmill', 'Egg', 'Milk', 'Willow Tree', 'Imps', 'Potato', 'Haystack', ]), RegionRow('Lumbridge Farms East', 'Area: Lumbridge Farms', ['South of Varrock', 'Lumbridge', ], ['Meat', 'Egg', 'Milk', 'Willow Tree', 'Goblin', 'Imps', 'Potato', ]), RegionRow('Sourhog\'s Lair', 'Area: South of Varrock', ['Lumbridge Farms West', 'Draynor Manor Outskirts', ], ['', ]), - RegionRow('South of Varrock', 'Area: South of Varrock', ['Al Kharid', 'West Varrock', 'Central Varrock', 'East Varrock', 'Lumbridge Farms East', 'Lumbridge', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Sheep', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Redberry Bush', 'Meat', 'Wheat', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Guard', 'Imps', 'Clay Ore', ]), - RegionRow('East Varrock', 'Area: East Varrock', ['Wilderness', 'South of Varrock', 'Central Varrock', 'Varrock Palace', ], ['Guard', ]), - RegionRow('Central Varrock', 'Area: Central Varrock', ['Varrock Palace', 'East Varrock', 'South of Varrock', 'West Varrock', ], ['Mind Runes', 'Chisel', 'Anvil', 'Bowl', 'Cake Tin', 'Oak Tree', 'Barbarian', 'Guard', 'Rune Essence', 'Imps', ]), - RegionRow('Varrock Palace', 'Area: Varrock Palace', ['Wilderness', 'East Varrock', 'Central Varrock', 'West Varrock', ], ['Pie Dish', 'Oak Tree', 'Zombie', 'Guard', 'Deadly Red Spider', 'Moss Giant', 'Nature Runes', 'Law Runes', ]), + RegionRow('South of Varrock', 'Area: South of Varrock', ['Al Kharid', 'West Varrock', 'Central Varrock', 'Lumberyard', 'Lumbridge Farms East', 'Lumbridge', 'Barbarian Village', 'Edgeville', 'Wilderness', ], ['Sheep', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Redberry Bush', 'Meat', 'Wheat', 'Oak Tree', 'Willow Tree', 'Canoe Tree', 'Guard', 'Imps', 'Clay Ore', 'Duck', ]), + RegionRow('Lumberyard', 'Area: Lumberyard', ['Wilderness', 'South of Varrock', 'Central Varrock', 'Varrock Palace', ], ['Guard', 'Bar', ]), + RegionRow('Central Varrock', 'Area: Central Varrock', ['Varrock Palace', 'Lumberyard', 'South of Varrock', 'West Varrock', ], ['Mind Runes', 'Chisel', 'Anvil', 'Bowl', 'Cake Tin', 'Oak Tree', 'Barbarian', 'Guard', 'Rune Essence', 'Imps', 'Makeover', 'Bar', ]), + RegionRow('Varrock Palace', 'Area: Varrock Palace', ['Wilderness', 'Lumberyard', 'Central Varrock', 'West Varrock', ], ['Pie Dish', 'Oak Tree', 'Zombie', 'Guard', 'Deadly Red Spider', 'Moss Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Makeover', 'Red Spider Eggs', ]), RegionRow('West Varrock', 'Area: West Varrock', ['Wilderness', 'Varrock Palace', 'South of Varrock', 'Barbarian Village', 'Edgeville', 'Cook\'s Guild', ], ['Anvil', 'Wheat', 'Oak Tree', 'Goblin', 'Guard', 'Onion', ]), RegionRow('Cook\'s Guild', 'Area: West Varrock*', ['West Varrock', ], ['Bowl', 'Cooking Apple', 'Pie Dish', 'Cake Tin', 'Windmill', ]), - RegionRow('Edgeville', 'Area: Edgeville', ['Wilderness', 'West Varrock', 'Barbarian Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Coal Ore', 'Bowl', 'Meat', 'Cake Tin', 'Willow Tree', 'Canoe Tree', 'Zombie', 'Guard', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Imps', ]), + RegionRow('Edgeville', 'Area: Edgeville', ['Wilderness', 'West Varrock', 'Barbarian Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Coal Ore', 'Bowl', 'Meat', 'Cake Tin', 'Willow Tree', 'Canoe Tree', 'Zombie', 'Guard', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Imps', 'Big Bones', 'Limpwurt Root', 'Haystack', ]), RegionRow('Barbarian Village', 'Area: Barbarian Village', ['Edgeville', 'West Varrock', 'Draynor Manor Outskirts', 'Dwarven Mountain Pass', ], ['Spinning Wheel', 'Coal Ore', 'Anvil', 'Fly Fishing Spot', 'Meat', 'Canoe Tree', 'Barbarian', 'Zombie', 'Law Runes', ]), RegionRow('Draynor Manor Outskirts', 'Area: Draynor Manor', ['Barbarian Village', 'Sourhog\'s Lair', 'Draynor Village', 'Falador East Outskirts', ], ['Goblin', ]), RegionRow('Draynor Manor', 'Area: Draynor Manor', ['Draynor Village', ], ['', ]), @@ -27,21 +27,21 @@ RegionRow('Ice Mountain', 'Area: Ice Mountain', ['Wilderness', 'Monastery', 'Dwarven Mines', 'Camdozaal*', ], ['', ]), RegionRow('Camdozaal', 'Area: Ice Mountain', ['Ice Mountain', ], ['Clay Ore', ]), RegionRow('Monastery', 'Area: Monastery', ['Wilderness', 'Dwarven Mountain Pass', 'Dwarven Mines', 'Ice Mountain', ], ['Sheep', ]), - RegionRow('Falador', 'Area: Falador', ['Dwarven Mountain Pass', 'Falador Farms', 'Dwarven Mines', ], ['Furnace', 'Chisel', 'Bowl', 'Cake Tin', 'Oak Tree', 'Guard', 'Imps', ]), - RegionRow('Falador Farms', 'Area: Falador Farms', ['Falador', 'Falador East Outskirts', 'Draynor Village', 'Port Sarim', 'Rimmington', 'Crafting Guild Outskirts', ], ['Spinning Wheel', 'Meat', 'Egg', 'Milk', 'Oak Tree', 'Imps', ]), + RegionRow('Falador', 'Area: Falador', ['Dwarven Mountain Pass', 'Falador Farms', 'Dwarven Mines', ], ['Furnace', 'Chisel', 'Bowl', 'Cake Tin', 'Oak Tree', 'Guard', 'Imps', 'Duck', 'Makeover', 'Bar', ]), + RegionRow('Falador Farms', 'Area: Falador Farms', ['Falador', 'Falador East Outskirts', 'Draynor Village', 'Port Sarim', 'Rimmington', 'Crafting Guild Outskirts', ], ['Spinning Wheel', 'Meat', 'Egg', 'Milk', 'Oak Tree', 'Imps', 'Duck', ]), RegionRow('Port Sarim', 'Area: Port Sarim', ['Falador Farms', 'Mudskipper Point', 'Rimmington', 'Karamja Docks', 'Crandor', ], ['Mind Runes', 'Shrimp Spot', 'Meat', 'Cheese', 'Tomato', 'Oak Tree', 'Willow Tree', 'Goblin', 'Potato', ]), RegionRow('Karamja Docks', 'Area: Mudskipper Point', ['Port Sarim', 'Karamja', ], ['', ]), - RegionRow('Mudskipper Point', 'Area: Mudskipper Point', ['Rimmington', 'Port Sarim', ], ['Anvil', 'Ice Giant', 'Nature Runes', 'Law Runes', ]), - RegionRow('Karamja', 'Area: Karamja', ['Karamja Docks', 'Crandor', ], ['Gold Ore', 'Lobster Spot', 'Bowl', 'Cake Tin', 'Deadly Red Spider', 'Imps', ]), - RegionRow('Crandor', 'Area: Crandor', ['Karamja', 'Port Sarim', ], ['Coal Ore', 'Gold Ore', 'Moss Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', ]), + RegionRow('Mudskipper Point', 'Area: Mudskipper Point', ['Rimmington', 'Port Sarim', ], ['Anvil', 'Ice Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), + RegionRow('Karamja', 'Area: Karamja', ['Karamja Docks', 'Crandor', ], ['Gold Ore', 'Lobster Spot', 'Bowl', 'Cake Tin', 'Deadly Red Spider', 'Imps', 'Red Spider Eggs', ]), + RegionRow('Crandor', 'Area: Crandor', ['Karamja', 'Port Sarim', ], ['Coal Ore', 'Gold Ore', 'Moss Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), RegionRow('Rimmington', 'Area: Rimmington', ['Falador Farms', 'Port Sarim', 'Mudskipper Point', 'Crafting Guild Peninsula', 'Corsair Cove', ], ['Chisel', 'Bronze Ores', 'Iron Ore', 'Gold Ore', 'Bowl', 'Cake Tin', 'Wheat', 'Oak Tree', 'Willow Tree', 'Crafting Moulds', 'Imps', 'Clay Ore', 'Onion', ]), - RegionRow('Crafting Guild Peninsula', 'Area: Crafting Guild', ['Falador Farms', 'Rimmington', ], ['', ]), - RegionRow('Crafting Guild Outskirts', 'Area: Crafting Guild', ['Falador Farms', 'Crafting Guild', ], ['Sheep', 'Willow Tree', 'Oak Tree', ]), + RegionRow('Crafting Guild Peninsula', 'Area: Crafting Guild', ['Falador Farms', 'Rimmington', ], ['Limpwurt Root', ]), + RegionRow('Crafting Guild Outskirts', 'Area: Crafting Guild', ['Falador Farms', 'Crafting Guild', ], ['Sheep', 'Willow Tree', 'Oak Tree', 'Makeover', ]), RegionRow('Crafting Guild', 'Area: Crafting Guild*', ['Crafting Guild', ], ['Spinning Wheel', 'Chisel', 'Silver Ore', 'Gold Ore', 'Meat', 'Milk', 'Clay Ore', ]), RegionRow('Draynor Village', 'Area: Draynor Village', ['Draynor Manor', 'Lumbridge Farms West', 'HAM Hideout', 'Wizard Tower', ], ['Anvil', 'Shrimp Spot', 'Wheat', 'Cheese', 'Tomato', 'Willow Tree', 'Goblin', 'Zombie', 'Nature Runes', 'Law Runes', 'Imps', ]), RegionRow('Wizard Tower', 'Area: Wizard Tower', ['Draynor Village', ], ['Lesser Demon', 'Rune Essence', ]), - RegionRow('Corsair Cove', 'Area: Corsair Cove*', ['Rimmington', ], ['Anvil', 'Meat', ]), + RegionRow('Corsair Cove', 'Area: Corsair Cove*', ['Rimmington', ], ['Anvil', 'Meat', 'Limpwurt Root', ]), RegionRow('Al Kharid', 'Area: Al Kharid', ['South of Varrock', 'Citharede Abbey', 'Lumbridge', 'Port Sarim', ], ['Furnace', 'Chisel', 'Bronze Ores', 'Iron Ore', 'Silver Ore', 'Coal Ore', 'Gold Ore', 'Shrimp Spot', 'Bowl', 'Cake Tin', 'Cheese', 'Crafting Moulds', 'Imps', ]), - RegionRow('Citharede Abbey', 'Area: Citharede Abbey', ['Al Kharid', ], ['Iron Ore', 'Coal Ore', 'Anvil', 'Hill Giant', 'Nature Runes', 'Law Runes', ]), - RegionRow('Wilderness', 'Area: Wilderness', ['East Varrock', 'Varrock Palace', 'West Varrock', 'Edgeville', 'Monastery', 'Ice Mountain', 'Goblin Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Iron Ore', 'Coal Ore', 'Anvil', 'Meat', 'Cake Tin', 'Cheese', 'Tomato', 'Oak Tree', 'Canoe Tree', 'Zombie', 'Hill Giant', 'Deadly Red Spider', 'Moss Giant', 'Ice Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', ]), + RegionRow('Citharede Abbey', 'Area: Citharede Abbey', ['Al Kharid', ], ['Iron Ore', 'Coal Ore', 'Anvil', 'Hill Giant', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', ]), + RegionRow('Wilderness', 'Area: Wilderness', ['Lumberyard', 'Varrock Palace', 'West Varrock', 'Edgeville', 'Monastery', 'Ice Mountain', 'Goblin Village', 'South of Varrock', 'Lumbridge', ], ['Furnace', 'Chisel', 'Iron Ore', 'Coal Ore', 'Anvil', 'Meat', 'Cake Tin', 'Cheese', 'Tomato', 'Oak Tree', 'Canoe Tree', 'Zombie', 'Hill Giant', 'Deadly Red Spider', 'Moss Giant', 'Ice Giant', 'Lesser Demon', 'Nature Runes', 'Law Runes', 'Big Bones', 'Limpwurt Root', 'Bar', ]), ] diff --git a/worlds/osrs/LogicCSV/resources_generated.py b/worlds/osrs/LogicCSV/resources_generated.py index 18c2ebe2f317..2b08f119199a 100644 --- a/worlds/osrs/LogicCSV/resources_generated.py +++ b/worlds/osrs/LogicCSV/resources_generated.py @@ -51,4 +51,11 @@ ResourceRow('Clay Ore'), ResourceRow('Onion'), ResourceRow('Potato'), + ResourceRow('Big Bones'), + ResourceRow('Duck'), + ResourceRow('Makeover'), + ResourceRow('Limpwurt Root'), + ResourceRow('Bar'), + ResourceRow('Haystack'), + ResourceRow('Red Spider Eggs'), ] diff --git a/worlds/osrs/Names.py b/worlds/osrs/Names.py index 1a44aa389c6a..138fa848507c 100644 --- a/worlds/osrs/Names.py +++ b/worlds/osrs/Names.py @@ -73,7 +73,7 @@ class ItemNames(str, Enum): South_Of_Varrock = "Area: South of Varrock" Central_Varrock = "Area: Central Varrock" Varrock_Palace = "Area: Varrock Palace" - East_Of_Varrock = "Area: East Varrock" + Lumberyard = "Area: Lumberyard" West_Varrock = "Area: West Varrock" Edgeville = "Area: Edgeville" Barbarian_Village = "Area: Barbarian Village" @@ -94,8 +94,8 @@ class ItemNames(str, Enum): Progressive_Weapons = "Progressive Weapons" Progressive_Tools = "Progressive Tools" Progressive_Range_Armor = "Progressive Ranged Armor" - Progressive_Range_Weapon = "Progressive Ranged Weapons" - Progressive_Magic = "Progressive Magic" + Progressive_Range_Weapon = "Progressive Ranged Weapon" + Progressive_Magic = "Progressive Magic Spell" Lobsters = "10 Lobsters" Swordfish = "5 Swordfish" Energy_Potions = "10 Energy Potions" diff --git a/worlds/osrs/Options.py b/worlds/osrs/Options.py index 81e017eddb34..55a040b0950e 100644 --- a/worlds/osrs/Options.py +++ b/worlds/osrs/Options.py @@ -3,18 +3,19 @@ from Options import Choice, Toggle, Range, PerGameCommonOptions MAX_COMBAT_TASKS = 16 -MAX_PRAYER_TASKS = 3 -MAX_MAGIC_TASKS = 4 -MAX_RUNECRAFT_TASKS = 3 -MAX_CRAFTING_TASKS = 5 -MAX_MINING_TASKS = 5 -MAX_SMITHING_TASKS = 4 -MAX_FISHING_TASKS = 5 -MAX_COOKING_TASKS = 5 -MAX_FIREMAKING_TASKS = 2 + +MAX_PRAYER_TASKS = 5 +MAX_MAGIC_TASKS = 7 +MAX_RUNECRAFT_TASKS = 8 +MAX_CRAFTING_TASKS = 11 +MAX_MINING_TASKS = 6 +MAX_SMITHING_TASKS = 5 +MAX_FISHING_TASKS = 6 +MAX_COOKING_TASKS = 6 +MAX_FIREMAKING_TASKS = 3 MAX_WOODCUTTING_TASKS = 3 -NON_QUEST_LOCATION_COUNT = 22 +NON_QUEST_LOCATION_COUNT = 49 class StartingArea(Choice): @@ -58,6 +59,31 @@ class ProgressiveTasks(Toggle): display_name = "Progressive Tasks" +class EnableDuds(Toggle): + """ + Whether to include filler "Dud" items that serve no purpose but allow for more tasks in the pool. + """ + display_name = "Enable Duds" + + +class DudCount(Range): + """ + How many "Dud" items to include in the pool. This setting is ignored if "Enable Duds" is not included + """ + display_name = "Dud Item Count" + range_start = 0 + range_end = 30 + default = 10 + + +class EnableCarePacks(Toggle): + """ + Whether or not to include useful "Care Pack" items that allow you to trade over specific items. + Note: Requires your account NOT to be an Ironman. Also, requires access to another account to trade over the items, + or gold to purchase off of the grand exchange. + """ + display_name = "Enable Care Packs" + class MaxCombatLevel(Range): """ The highest combat level of monster to possibly be assigned as a task. @@ -472,6 +498,9 @@ class OSRSOptions(PerGameCommonOptions): starting_area: StartingArea brutal_grinds: BrutalGrinds progressive_tasks: ProgressiveTasks + enable_duds: EnableDuds + dud_count: DudCount + enable_carepacks: EnableCarePacks max_combat_level: MaxCombatLevel max_combat_tasks: MaxCombatTasks combat_task_weight: CombatTaskWeight diff --git a/worlds/osrs/Rules.py b/worlds/osrs/Rules.py index 22a19934c8e1..7fd770f0f7a7 100644 --- a/worlds/osrs/Rules.py +++ b/worlds/osrs/Rules.py @@ -212,11 +212,14 @@ def get_skill_rule(skill, level, player, options) -> CollectionRule: return lambda state: True -def generate_special_rules_for(entrance, region_row, outbound_region_name, player, options): +def generate_special_rules_for(entrance, region_row, outbound_region_name, player, options, world): if outbound_region_name == RegionNames.Cooks_Guild: add_rule(entrance, get_cooking_skill_rule(32, player, options)) + # Since there's goblins in this chunk, checking for hat access is superfluous, you'd always have it anyway elif outbound_region_name == RegionNames.Crafting_Guild: add_rule(entrance, get_crafting_skill_rule(40, player, options)) + # Literally the only brown apron access in the entirety of f2p is buying it in varrock + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Central_Varrock, player)) elif outbound_region_name == RegionNames.Corsair_Cove: # Need to be able to start Corsair Curse in addition to having the item add_rule(entrance, lambda state: state.can_reach(RegionNames.Falador_Farm, "Region", player)) @@ -224,6 +227,17 @@ def generate_special_rules_for(entrance, region_row, outbound_region_name, playe add_rule(entrance, lambda state: state.has(ItemNames.QP_Below_Ice_Mountain, player)) elif region_row.name == "Dwarven Mountain Pass" and outbound_region_name == "Anvil*": add_rule(entrance, lambda state: state.has(ItemNames.QP_Dorics_Quest, player)) + elif outbound_region_name == RegionNames.Crandor: + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.South_Of_Varrock, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Edgeville, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Lumbridge, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Rimmington, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Monastery, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Dwarven_Mines, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Port_Sarim, player)) + add_rule(entrance, lambda state: state.can_reach_region(RegionNames.Draynor_Village, player)) + add_rule(entrance, lambda state: world.quest_points(state) >= 32) + # Special logic for canoes canoe_regions = [RegionNames.Lumbridge, RegionNames.South_Of_Varrock, RegionNames.Barbarian_Village, diff --git a/worlds/osrs/__init__.py b/worlds/osrs/__init__.py index d6ddd63875f4..9e439fe52ce3 100644 --- a/worlds/osrs/__init__.py +++ b/worlds/osrs/__init__.py @@ -168,7 +168,7 @@ def create_regions(self) -> None: item_name = self.region_rows_by_name[parsed_outbound].itemReq entrance.access_rule = lambda state, item_name=item_name.replace("*",""): state.has(item_name, self.player) - generate_special_rules_for(entrance, region_row, outbound_region_name, self.player, self.options) + generate_special_rules_for(entrance, region_row, outbound_region_name, self.player, self.options, self) for resource_region in region_row.resources: if not resource_region: @@ -179,7 +179,7 @@ def create_regions(self) -> None: entrance.connect(self.region_name_to_data[resource_region]) else: entrance.connect(self.region_name_to_data[resource_region.replace('*', '')]) - generate_special_rules_for(entrance, region_row, resource_region, self.player, self.options) + generate_special_rules_for(entrance, region_row, resource_region, self.player, self.options, self) self.roll_locations() @@ -195,7 +195,16 @@ def roll_locations(self): generation_is_fake = hasattr(self.multiworld, "generation_is_fake") # UT specific override locations_required = 0 for item_row in item_rows: + # If it's a filler item, set it aside for later + if item_row.progression == ItemClassification.filler: + continue + + # If it starts with "Care Pack", only add it if Care Packs are enabled + if item_row.name.startswith("Care Pack"): + if not self.options.enable_carepacks: + continue locations_required += item_row.amount + if self.options.enable_duds: locations_required += self.options.dud_count locations_added = 1 # At this point we've already added the starting area, so we start at 1 instead of 0 @@ -232,6 +241,7 @@ def roll_locations(self): max_amount_for_task_type = getattr(self.options, f"max_{task_type}_tasks") tasks_for_this_type = [task for task in self.locations_by_category[task_type] if self.task_within_skill_levels(task.skills)] + max_amount_for_task_type = min(max_amount_for_task_type, len(tasks_for_this_type)) if not self.options.progressive_tasks: rnd.shuffle(tasks_for_this_type) else: @@ -286,16 +296,36 @@ def add_location(self, location): self.create_and_add_location(index) def create_items(self) -> None: + filler_items = [] for item_row in item_rows: if item_row.name != self.starting_area_item: + # If it's a filler item, set it aside for later + if item_row.progression == ItemClassification.filler: + filler_items.append(item_row) + continue + + # If it starts with "Care Pack", only add it if Care Packs are enabled + if item_row.name.startswith("Care Pack"): + if not self.options.enable_carepacks: + continue + for c in range(item_row.amount): item = self.create_item(item_row.name) self.multiworld.itempool.append(item) + if self.options.enable_duds: + self.random.shuffle(filler_items) + filler_items = filler_items[0:self.options.dud_count] + for item_row in filler_items: + item = self.create_item(item_row.name) + self.multiworld.itempool.append(item) def get_filler_item_name(self) -> str: - return self.random.choice( - [ItemNames.Progressive_Armor, ItemNames.Progressive_Weapons, ItemNames.Progressive_Magic, - ItemNames.Progressive_Tools, ItemNames.Progressive_Range_Armor, ItemNames.Progressive_Range_Weapon]) + if self.options.enable_duds: + return self.random.choice([item for item in item_rows if item.progression == ItemClassification.filler]) + else: + return self.random.choice([ItemNames.Progressive_Weapons, ItemNames.Progressive_Magic, + ItemNames.Progressive_Range_Weapon, ItemNames.Progressive_Armor, + ItemNames.Progressive_Range_Armor, ItemNames.Progressive_Tools]) def create_and_add_location(self, row_index) -> None: location_row = location_rows[row_index] diff --git a/worlds/pokemon_rb/__init__.py b/worlds/pokemon_rb/__init__.py index 644aa1ed9cab..a455e38f2934 100644 --- a/worlds/pokemon_rb/__init__.py +++ b/worlds/pokemon_rb/__init__.py @@ -18,7 +18,7 @@ from .options import PokemonRBOptions from .rom_addresses import rom_addresses from .text import encode_text -from .rom import generate_output, get_base_rom_bytes, get_base_rom_path, RedDeltaPatch, BlueDeltaPatch +from .rom import generate_output, PokemonRedProcedurePatch, PokemonBlueProcedurePatch from .pokemon import process_pokemon_data, process_move_data, verify_hm_moves from .encounters import process_pokemon_locations, process_trainer_data from .rules import set_rules @@ -33,12 +33,12 @@ class RedRomFile(settings.UserFilePath): """File names of the Pokemon Red and Blue roms""" description = "Pokemon Red (UE) ROM File" copy_to = "Pokemon Red (UE) [S][!].gb" - md5s = [RedDeltaPatch.hash] + md5s = [PokemonRedProcedurePatch.hash] class BlueRomFile(settings.UserFilePath): description = "Pokemon Blue (UE) ROM File" copy_to = "Pokemon Blue (UE) [S][!].gb" - md5s = [BlueDeltaPatch.hash] + md5s = [PokemonBlueProcedurePatch.hash] red_rom_file: RedRomFile = RedRomFile(RedRomFile.copy_to) blue_rom_file: BlueRomFile = BlueRomFile(BlueRomFile.copy_to) @@ -113,16 +113,6 @@ def __init__(self, multiworld: MultiWorld, player: int): self.local_locs = [] self.pc_item = None - @classmethod - def stage_assert_generate(cls, multiworld: MultiWorld): - versions = set() - for player in multiworld.player_ids: - if multiworld.worlds[player].game == "Pokemon Red and Blue": - versions.add(multiworld.worlds[player].options.game_version.current_key) - for version in versions: - if not os.path.exists(get_base_rom_path(version)): - raise FileNotFoundError(get_base_rom_path(version)) - @classmethod def stage_generate_early(cls, multiworld: MultiWorld): @@ -331,7 +321,7 @@ def fill_hook(self, progitempool, usefulitempool, filleritempool, fill_locations "Fuchsia Gym - Koga Prize", "Saffron Gym - Sabrina Prize", "Cinnabar Gym - Blaine Prize", "Viridian Gym - Giovanni Prize" ] if self.multiworld.get_location(loc, self.player).item is None] - state = self.multiworld.get_all_state(False) + state = self.multiworld.get_all_state(False, True, False) # Give it two tries to place badges with wild Pokemon and learnsets as-is. # If it can't, then try with all Pokemon collected, and we'll try to fix HM move availability after. if attempt > 1: @@ -405,7 +395,7 @@ def pre_fill(self) -> None: # Delete evolution events for Pokémon that are not in logic in an all_state so that accessibility check does not # fail. Re-use test_state from previous final loop. - all_state = self.multiworld.get_all_state(False) + all_state = self.multiworld.get_all_state(False, True, False) evolutions_region = self.multiworld.get_region("Evolution", self.player) for location in evolutions_region.locations.copy(): if not all_state.can_reach(location, player=self.player): @@ -458,7 +448,7 @@ def pre_fill(self) -> None: self.local_locs = locs - all_state = self.multiworld.get_all_state(False) + all_state = self.multiworld.get_all_state(False, True, False) reachable_mons = set() for mon in poke_data.pokemon_data: @@ -526,6 +516,11 @@ def pre_fill(self) -> None: loc.item = None loc.place_locked_item(self.pc_item) + def get_pre_fill_items(self) -> typing.List["Item"]: + pool = [self.create_item(mon) for mon in poke_data.pokemon_data] + pool.append(self.pc_item) + return pool + @classmethod def stage_post_fill(cls, multiworld): # Convert all but one of each instance of a wild Pokemon to useful classification. diff --git a/worlds/pokemon_rb/client.py b/worlds/pokemon_rb/client.py index 97ca126476fd..2eb56f539840 100644 --- a/worlds/pokemon_rb/client.py +++ b/worlds/pokemon_rb/client.py @@ -23,6 +23,7 @@ "DexSanityFlag": (0x1A71, 19), "GameStatus": (0x1A84, 0x01), "Money": (0x141F, 3), + "CurrentMap": (0x1436, 1), "ResetCheck": (0x0100, 4), # First and second Vermilion Gym trash can selection. Second is not used, so should always be 0. # First should never be above 0x0F. This is just before Event Flags. @@ -65,6 +66,7 @@ def __init__(self): self.banking_command = None self.game_state = False self.last_death_link = 0 + self.current_map = 0 async def validate_rom(self, ctx): game_name = await read(ctx.bizhawk_ctx, [(0x134, 12, "ROM")]) @@ -230,6 +232,10 @@ async def game_watcher(self, ctx): }]) self.banking_command = None + if data["CurrentMap"][0] != self.current_map: + await ctx.send_msgs([{"cmd": "Bounce", "slots": [ctx.slot], "data": {"currentMap": data["CurrentMap"][0]}}]) + self.current_map = data["CurrentMap"][0] + # VICTORY if data["EventFlag"][280] & 1 and not ctx.finished_game: diff --git a/worlds/pokemon_rb/docs/setup_en.md b/worlds/pokemon_rb/docs/setup_en.md index 773fb14da9e7..7e05c8c782d0 100644 --- a/worlds/pokemon_rb/docs/setup_en.md +++ b/worlds/pokemon_rb/docs/setup_en.md @@ -15,7 +15,7 @@ As we are using BizHawk, this guide is only applicable to Windows and Linux syst ## Optional Software -- [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/coveleski/rb_tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases) +- [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/palex00/rb_tracker/releases/latest), for use with [PopTracker](https://github.com/black-sliver/PopTracker/releases) ## Configuring BizHawk @@ -109,7 +109,7 @@ server uses password, type in the bottom textfield `/connect
: [p Pokémon Red and Blue has a fully functional map tracker that supports auto-tracking. -1. Download [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/coveleski/rb_tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). +1. Download [Pokémon Red and Blue Archipelago Map Tracker](https://github.com/palex00/rb_tracker/releases/latest) and [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Open PopTracker, and load the Pokémon Red and Blue pack. 3. Click on the "AP" symbol at the top. 4. Enter the AP address, slot name and password. diff --git a/worlds/pokemon_rb/docs/setup_es.md b/worlds/pokemon_rb/docs/setup_es.md index 67024c5b52ec..5c735bfe992a 100644 --- a/worlds/pokemon_rb/docs/setup_es.md +++ b/worlds/pokemon_rb/docs/setup_es.md @@ -16,7 +16,7 @@ Al usar BizHawk, esta guía solo es aplicable en los sistemas de Windows y Linux ## Software Opcional -- [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/coveleski/rb_tracker/releases/latest), para usar con [PopTracker](https://github.com/black-sliver/PopTracker/releases) +- [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/palex00/rb_tracker/releases/latest), para usar con [PopTracker](https://github.com/black-sliver/PopTracker/releases) ## Configurando BizHawk @@ -114,7 +114,7 @@ presiona enter (si el servidor usa contraseña, escribe en el campo de texto inf Pokémon Red and Blue tiene un mapa completamente funcional que soporta seguimiento automático. -1. Descarga el [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/coveleski/rb_tracker/releases/latest) y [PopTracker](https://github.com/black-sliver/PopTracker/releases). +1. Descarga el [Tracker de mapa para Pokémon Red and Blue Archipelago](https://github.com/palex00/rb_tracker/releases/latest) y [PopTracker](https://github.com/black-sliver/PopTracker/releases). 2. Abre PopTracker, y carga el pack de Pokémon Red and Blue. 3. Haz clic en el símbolo "AP" en la parte superior. 4. Ingresa la dirección de AP, nombre del slot y contraseña (si es que hay). diff --git a/worlds/pokemon_rb/pokemon.py b/worlds/pokemon_rb/pokemon.py index 32c0e36869da..f1c171b88deb 100644 --- a/worlds/pokemon_rb/pokemon.py +++ b/worlds/pokemon_rb/pokemon.py @@ -1,9 +1,17 @@ from copy import deepcopy +import typing + +from worlds.Files import APTokenTypes + from . import poke_data, logic from .rom_addresses import rom_addresses +if typing.TYPE_CHECKING: + from . import PokemonRedBlueWorld + from .rom import PokemonRedProcedurePatch, PokemonBlueProcedurePatch + -def set_mon_palettes(world, random, data): +def set_mon_palettes(world: "PokemonRedBlueWorld", patch: "PokemonRedProcedurePatch | PokemonBlueProcedurePatch"): if world.options.randomize_pokemon_palettes == "vanilla": return pallet_map = { @@ -31,12 +39,9 @@ def set_mon_palettes(world, random, data): poke_data.evolves_from and poke_data.evolves_from[mon] != "Eevee"): pallet = palettes[-1] else: # completely_random or follow_evolutions and it is not an evolved form (except eeveelutions) - pallet = random.choice(list(pallet_map.values())) + pallet = world.random.choice(list(pallet_map.values())) palettes.append(pallet) - address = rom_addresses["Mon_Palettes"] - for pallet in palettes: - data[address] = pallet - address += 1 + patch.write_token(APTokenTypes.WRITE, rom_addresses["Mon_Palettes"], bytes(palettes)) def choose_forced_type(chances, random): @@ -253,9 +258,9 @@ def process_pokemon_data(self): mon_data[f"start move {i}"] = learnsets[mon].pop(0) if self.options.randomize_pokemon_catch_rates: - mon_data["catch rate"] = self.random.randint(self.options.minimum_catch_rate, 255) + mon_data["catch rate"] = self.random.randint(self.options.minimum_catch_rate.value, 255) else: - mon_data["catch rate"] = max(self.options.minimum_catch_rate, mon_data["catch rate"]) + mon_data["catch rate"] = max(self.options.minimum_catch_rate.value, mon_data["catch rate"]) def roll_tm_compat(roll_move): if self.local_move_data[roll_move]["type"] in [mon_data["type1"], mon_data["type2"]]: @@ -395,7 +400,7 @@ def number_of_zones(mon): last_intervene = None while True: intervene_move = None - test_state = multiworld.get_all_state(False) + test_state = multiworld.get_all_state(False, True, False) if not logic.can_learn_hm(test_state, world, "Surf", player): intervene_move = "Surf" elif not logic.can_learn_hm(test_state, world, "Strength", player): diff --git a/worlds/pokemon_rb/rock_tunnel.py b/worlds/pokemon_rb/rock_tunnel.py index 46b2be3040dc..83b59255c611 100644 --- a/worlds/pokemon_rb/rock_tunnel.py +++ b/worlds/pokemon_rb/rock_tunnel.py @@ -1,5 +1,55 @@ +import random +import typing + +from worlds.Files import APTokenTypes + from .rom_addresses import rom_addresses +if typing.TYPE_CHECKING: + from .rom import PokemonBlueProcedurePatch, PokemonRedProcedurePatch + + +layout1F = [ + [20, 22, 32, 34, 20, 25, 22, 32, 34, 20, 25, 25, 25, 22, 20, 25, 22, 2, 2, 2], + [24, 26, 40, 1, 24, 25, 26, 62, 1, 28, 29, 29, 29, 30, 28, 29, 30, 1, 40, 2], + [28, 30, 1, 1, 28, 29, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 23], + [23, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 31, 32, 34, 2, 1, 1, 2, 32, 34, 32, 34, 1, 1, 23], + [23, 1, 1, 23, 1, 1, 23, 1, 40, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [31, 1, 1, 31, 1, 1, 31, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [23, 1, 1, 23, 1, 1, 1, 1, 1, 2, 32, 34, 32, 34, 32, 34, 32, 34, 2, 31], + [31, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23, 1, 1, 40, 23], + [23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 31, 1, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23, 1, 1, 1, 23], + [23, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 31, 1, 1, 1, 31, 1, 1, 1, 31], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 23], + [ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 1, 1, 31], + [20, 21, 21, 21, 22, 42, 1, 1, 1, 1, 20, 21, 22, 1, 1, 1, 1, 1, 1, 23], + [24, 25, 25, 25, 26, 1, 1, 1, 1, 1, 24, 25, 26, 1, 1, 1, 1, 1, 1, 31], + [24, 25, 25, 25, 26, 1, 1, 62, 1, 1, 24, 25, 26, 20, 21, 21, 21, 21, 21, 22], + [28, 29, 29, 29, 30, 78, 81, 82, 77, 78, 28, 29, 30, 28, 29, 29, 29, 29, 29, 30], +] +layout2F = [ + [23, 2, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34], + [31, 62, 1, 23, 1, 1, 23, 1, 1, 1, 1, 1, 23, 62, 1, 1, 1, 1, 1, 2], + [23, 1, 1, 31, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 23, 1, 1, 23, 1, 1, 23, 1, 1, 23, 23, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 31, 1, 1, 31, 2, 2, 31, 1, 1, 31, 31, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 62, 23, 1, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 1, 1, 1, 23, 32, 34, 32, 34, 32, 34, 1, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 23, 1, 1, 2, 1, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 31, 1, 1, 2, 1, 1, 31, 1, 1, 1, 32, 34, 32, 34, 32, 34, 23], + [31, 2, 2, 2, 1, 1, 32, 34, 32, 34, 1, 1, 1, 23, 1, 1, 1, 1, 1, 31], + [23, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 1, 31, 1, 1, 62, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 31], + [23, 32, 34, 32, 34, 32, 34, 1, 1, 32, 34, 32, 34, 31, 1, 1, 1, 1, 1, 23], + [31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31], + [ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23], + [32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 32, 34, 2, 31] +] + disallowed1F = [[2, 2], [3, 2], [1, 8], [2, 8], [7, 7], [8, 7], [10, 4], [11, 4], [11, 12], [11, 13], [16, 10], [17, 10], [18, 10], [16, 12], [17, 12], [18, 12]] disallowed2F = [[16, 2], [17, 2], [18, 2], [15, 5], [15, 6], [10, 10], [11, 10], [12, 10], [7, 14], [8, 14], [1, 15], @@ -7,29 +57,12 @@ [11, 1]] -def randomize_rock_tunnel(data, random): - +def randomize_rock_tunnel(patch: "PokemonRedProcedurePatch | PokemonBlueProcedurePatch", random: random.Random): seed = random.randint(0, 999999999999999999) random.seed(seed) - map1f = [] - map2f = [] - - address = rom_addresses["Map_Rock_Tunnel1F"] - for y in range(0, 18): - row = [] - for x in range(0, 20): - row.append(data[address]) - address += 1 - map1f.append(row) - - address = rom_addresses["Map_Rock_TunnelB1F"] - for y in range(0, 18): - row = [] - for x in range(0, 20): - row.append(data[address]) - address += 1 - map2f.append(row) + map1f = [row.copy() for row in layout1F] + map2f = [row.copy() for row in layout2F] current_map = map1f @@ -305,14 +338,6 @@ def check_addable_block(check_map, disallowed): current_map = map2f check_addable_block(map2f, disallowed2F) - address = rom_addresses["Map_Rock_Tunnel1F"] - for y in map1f: - for x in y: - data[address] = x - address += 1 - address = rom_addresses["Map_Rock_TunnelB1F"] - for y in map2f: - for x in y: - data[address] = x - address += 1 - return seed \ No newline at end of file + patch.write_token(APTokenTypes.WRITE, rom_addresses["Map_Rock_Tunnel1F"], bytes([b for row in map1f for b in row])) + patch.write_token(APTokenTypes.WRITE, rom_addresses["Map_Rock_TunnelB1F"], bytes([b for row in map2f for b in row])) + return seed diff --git a/worlds/pokemon_rb/rom.py b/worlds/pokemon_rb/rom.py index 5ebd204c9abc..e49da82cc4f6 100644 --- a/worlds/pokemon_rb/rom.py +++ b/worlds/pokemon_rb/rom.py @@ -1,21 +1,66 @@ import os -import hashlib -import Utils -import bsdiff4 import pkgutil -from worlds.Files import APDeltaPatch -from .text import encode_text +import typing + +import Utils +from worlds.Files import APProcedurePatch, APTokenMixin, APTokenTypes + +from . import poke_data from .items import item_table +from .text import encode_text from .pokemon import set_mon_palettes +from .regions import PokemonRBWarp, map_ids, town_map_coords from .rock_tunnel import randomize_rock_tunnel from .rom_addresses import rom_addresses -from .regions import PokemonRBWarp, map_ids, town_map_coords -from . import poke_data +if typing.TYPE_CHECKING: + from . import PokemonRedBlueWorld + + +class PokemonRedProcedurePatch(APProcedurePatch, APTokenMixin): + game = "Pokemon Red and Blue" + hash = "3d45c1ee9abd5738df46d2bdda8b57dc" + patch_file_ending = ".apred" + result_file_ending = ".gb" + + procedure = [ + ("apply_bsdiff4", ["base_patch.bsdiff4"]), + ("apply_tokens", ["token_data.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + from . import PokemonRedBlueWorld + with open(PokemonRedBlueWorld.settings.red_rom_file, "rb") as infile: + base_rom_bytes = bytes(infile.read()) + + return base_rom_bytes + + +class PokemonBlueProcedurePatch(APProcedurePatch, APTokenMixin): + game = "Pokemon Red and Blue" + hash = "50927e843568814f7ed45ec4f944bd8b" + patch_file_ending = ".apblue" + result_file_ending = ".gb" + + procedure = [ + ("apply_bsdiff4", ["base_patch.bsdiff4"]), + ("apply_tokens", ["token_data.bin"]), + ] + + @classmethod + def get_source_data(cls) -> bytes: + from . import PokemonRedBlueWorld + with open(PokemonRedBlueWorld.settings.blue_rom_file, "rb") as infile: + base_rom_bytes = bytes(infile.read()) + + return base_rom_bytes -def write_quizzes(world, data, random): - def get_quiz(q, a): +def write_quizzes(world: "PokemonRedBlueWorld", patch: PokemonBlueProcedurePatch | PokemonRedProcedurePatch): + random = world.random + + def get_quiz(q: int, a: int): if q == 0: r = random.randint(0, 3) if r == 0: @@ -122,13 +167,13 @@ def get_quiz(q, a): elif q2 == 1: if a: state = random.choice( - ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', - 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', - 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', - 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Jersey', 'New Mexico', - 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', - 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', - 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']) + ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", + "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", + "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", + "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Jersey", "New Mexico", + "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", + "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", + "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]) else: state = "New Hampshire" return encode_text( @@ -209,7 +254,7 @@ def get_quiz(q, a): return encode_text(f"{type1} deals{eff}damage to{type2} type?") elif q == 14: fossil_level = world.multiworld.get_location("Fossil Level - Trainer Parties", - world.player).party_data[0]['level'] + world.player).party_data[0]["level"] if not a: fossil_level += random.choice((-5, 5)) return encode_text(f"Fossil #MONrevive at level{fossil_level}?") @@ -224,46 +269,49 @@ def get_quiz(q, a): return encode_text(f"According toMonash Uni.,{fodmap} {are_is}considered highin FODMAPs?") answers = [random.randint(0, 1) for _ in range(6)] - questions = random.sample((range(0, 16)), 6) - - question_texts = [] + question_texts: list[bytearray] = [] for i, question in enumerate(questions): question_texts.append(get_quiz(question, answers[i])) for i, quiz in enumerate(["A", "B", "C", "D", "E", "F"]): - data[rom_addresses[f"Quiz_Answer_{quiz}"]] = int(not answers[i]) << 4 | (i + 1) - write_bytes(data, question_texts[i], rom_addresses[f"Text_Quiz_{quiz}"]) + patch.write_token(APTokenTypes.WRITE, rom_addresses[f"Quiz_Answer_{quiz}"], bytes([int(not answers[i]) << 4 | (i + 1)])) + patch.write_token(APTokenTypes.WRITE, rom_addresses[f"Text_Quiz_{quiz}"], bytes(question_texts[i])) -def generate_output(world, output_directory: str): - random = world.random +def generate_output(world: "PokemonRedBlueWorld", output_directory: str): game_version = world.options.game_version.current_key - data = bytes(get_base_rom_bytes(game_version)) - base_patch = pkgutil.get_data(__name__, f'basepatch_{game_version}.bsdiff4') + patch_type = PokemonBlueProcedurePatch if game_version == "blue" else PokemonRedProcedurePatch + patch = patch_type(player=world.player, player_name=world.player_name) + patch.write_file("base_patch.bsdiff4", pkgutil.get_data(__name__, f"basepatch_{game_version}.bsdiff4")) - data = bytearray(bsdiff4.patch(data, base_patch)) + def write_bytes(address: int, data: typing.Sequence[int] | int): + if isinstance(data, int): + data = bytes([data]) + else: + data = bytes(data) - basemd5 = hashlib.md5() - basemd5.update(data) + patch.write_token(APTokenTypes.WRITE, address, data) pallet_connections = {entrance: world.multiworld.get_entrance(f"Pallet Town to {entrance}", - world.player).connected_region.name for - entrance in ["Player's House 1F", "Oak's Lab", - "Rival's House"]} + world.player).connected_region.name + for entrance in ["Player's House 1F", "Oak's Lab", "Rival's House"]} paths = None + if pallet_connections["Player's House 1F"] == "Oak's Lab": - paths = ((0x00, 4, 0x80, 5, 0x40, 1, 0xE0, 1, 0xFF), (0x40, 2, 0x20, 5, 0x80, 5, 0xFF)) + paths = (bytes([0x00, 4, 0x80, 5, 0x40, 1, 0xE0, 1, 0xFF]), bytes([0x40, 2, 0x20, 5, 0x80, 5, 0xFF])) elif pallet_connections["Rival's House"] == "Oak's Lab": - paths = ((0x00, 4, 0xC0, 3, 0x40, 1, 0xE0, 1, 0xFF), (0x40, 2, 0x10, 3, 0x80, 5, 0xFF)) + paths = (bytes([0x00, 4, 0xC0, 3, 0x40, 1, 0xE0, 1, 0xFF]), bytes([0x40, 2, 0x10, 3, 0x80, 5, 0xFF])) + if paths: - write_bytes(data, paths[0], rom_addresses["Path_Pallet_Oak"]) - write_bytes(data, paths[1], rom_addresses["Path_Pallet_Player"]) + write_bytes(rom_addresses["Path_Pallet_Oak"], paths[0]) + write_bytes(rom_addresses["Path_Pallet_Player"], paths[1]) + if pallet_connections["Rival's House"] == "Player's House 1F": - write_bytes(data, [0x2F, 0xC7, 0x06, 0x0D, 0x00, 0x01], rom_addresses["Pallet_Fly_Coords"]) + write_bytes(rom_addresses["Pallet_Fly_Coords"], [0x2F, 0xC7, 0x06, 0x0D, 0x00, 0x01]) elif pallet_connections["Oak's Lab"] == "Player's House 1F": - write_bytes(data, [0x5F, 0xC7, 0x0C, 0x0C, 0x00, 0x00], rom_addresses["Pallet_Fly_Coords"]) + write_bytes(rom_addresses["Pallet_Fly_Coords"], [0x5F, 0xC7, 0x0C, 0x0C, 0x00, 0x00]) for region in world.multiworld.get_regions(world.player): for entrance in region.exits: @@ -281,16 +329,18 @@ def generate_output(world, output_directory: str): while i > len(warp_to_ids) - 1: i -= len(warp_to_ids) connected_map_name = entrance.connected_region.name.split("-")[0] - data[address] = 0 if "Elevator" in connected_map_name else warp_to_ids[i] - data[address + 1] = map_ids[connected_map_name] + write_bytes(address, [ + 0 if "Elevator" in connected_map_name else warp_to_ids[i], + map_ids[connected_map_name] + ]) if world.options.door_shuffle == "simple": for (entrance, _, _, map_coords_entries, map_name, _) in town_map_coords.values(): destination = world.multiworld.get_entrance(entrance, world.player).connected_region.name (_, x, y, _, _, map_order_entry) = town_map_coords[destination] for map_coord_entry in map_coords_entries: - data[rom_addresses["Town_Map_Coords"] + (map_coord_entry * 4) + 1] = (y << 4) | x - data[rom_addresses["Town_Map_Order"] + map_order_entry] = map_ids[map_name] + write_bytes(rom_addresses["Town_Map_Coords"] + (map_coord_entry * 4) + 1, (y << 4) | x) + write_bytes(rom_addresses["Town_Map_Order"] + map_order_entry, map_ids[map_name]) if not world.options.key_items_only: for i, gym_leader in enumerate(("Pewter Gym - Brock TM", "Cerulean Gym - Misty TM", @@ -302,13 +352,13 @@ def generate_output(world, output_directory: str): try: tm = int(item_name[2:4]) move = poke_data.moves[world.local_tms[tm - 1]]["id"] - data[rom_addresses["Gym_Leader_Moves"] + (2 * i)] = move + write_bytes(rom_addresses["Gym_Leader_Moves"] + (2 * i), move) except KeyError: pass def set_trade_mon(address, loc): mon = world.multiworld.get_location(loc, world.player).item.name - data[rom_addresses[address]] = poke_data.pokemon_data[mon]["id"] + write_bytes(rom_addresses[address], poke_data.pokemon_data[mon]["id"]) world.trade_mons[address] = mon if game_version == "red": @@ -325,141 +375,139 @@ def set_trade_mon(address, loc): set_trade_mon("Trade_Doris", "Cerulean Cave 1F - Wild Pokemon - 9") set_trade_mon("Trade_Crinkles", "Route 12 - Wild Pokemon - 4") - data[rom_addresses['Fly_Location']] = world.fly_map_code - data[rom_addresses['Map_Fly_Location']] = world.town_map_fly_map_code + write_bytes(rom_addresses["Fly_Location"], world.fly_map_code) + write_bytes(rom_addresses["Map_Fly_Location"], world.town_map_fly_map_code) if world.options.fix_combat_bugs: - data[rom_addresses["Option_Fix_Combat_Bugs"]] = 1 - data[rom_addresses["Option_Fix_Combat_Bugs_Focus_Energy"]] = 0x28 # jr z - data[rom_addresses["Option_Fix_Combat_Bugs_HP_Drain_Dream_Eater"]] = 0x1A # ld a, (de) - data[rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"]] = 0xe6 # and a, direct - data[rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"] + 1] = 0b0011111 - data[rom_addresses["Option_Fix_Combat_Bugs_Struggle"]] = 0xe6 # and a, direct - data[rom_addresses["Option_Fix_Combat_Bugs_Struggle"] + 1] = 0x3f - data[rom_addresses["Option_Fix_Combat_Bugs_Dig_Fly"]] = 0b10001100 - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"]] = 0x20 # jr nz, - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"] + 1] = 5 # 5 bytes ahead - data[rom_addresses["Option_Fix_Combat_Bugs_Heal_Stat_Modifiers"]] = 1 + write_bytes(rom_addresses["Option_Fix_Combat_Bugs"], 1) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Focus_Energy"], 0x28) # jr z + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_HP_Drain_Dream_Eater"], 0x1A) # ld a, (de) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"], 0xe6) # and a, direct + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_PP_Restore"] + 1, 0b0011111) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Struggle"], 0xe6) # and a, direct + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Struggle"] + 1, 0x3f) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Dig_Fly"], 0b10001100) + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"], 0x20) # jr nz, + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Effect"] + 1, 5) # 5 bytes ahead + write_bytes(rom_addresses["Option_Fix_Combat_Bugs_Heal_Stat_Modifiers"], 1) if world.options.poke_doll_skip == "in_logic": - data[rom_addresses["Option_Silph_Scope_Skip"]] = 0x00 # nop - data[rom_addresses["Option_Silph_Scope_Skip"] + 1] = 0x00 # nop - data[rom_addresses["Option_Silph_Scope_Skip"] + 2] = 0x00 # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"], 0x00) # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"] + 1, 0x00) # nop + write_bytes(rom_addresses["Option_Silph_Scope_Skip"] + 2, 0x00) # nop if world.options.bicycle_gate_skips == "patched": - data[rom_addresses["Option_Route_16_Gate_Fix"]] = 0x00 # nop - data[rom_addresses["Option_Route_16_Gate_Fix"] + 1] = 0x00 # nop - data[rom_addresses["Option_Route_18_Gate_Fix"]] = 0x00 # nop - data[rom_addresses["Option_Route_18_Gate_Fix"] + 1] = 0x00 # nop + write_bytes(rom_addresses["Option_Route_16_Gate_Fix"], 0x00) # nop + write_bytes(rom_addresses["Option_Route_16_Gate_Fix"] + 1, 0x00) # nop + write_bytes(rom_addresses["Option_Route_18_Gate_Fix"], 0x00) # nop + write_bytes(rom_addresses["Option_Route_18_Gate_Fix"] + 1, 0x00) # nop if world.options.door_shuffle: - data[rom_addresses["Entrance_Shuffle_Fuji_Warp"]] = 1 # prevent warping to Fuji's House from Pokemon Tower 7F + write_bytes(rom_addresses["Entrance_Shuffle_Fuji_Warp"], 1) # prevent warping to Fuji's House from Pokemon Tower 7F if world.options.all_elevators_locked: - data[rom_addresses["Option_Locked_Elevator_Celadon"]] = 0x20 # jr nz - data[rom_addresses["Option_Locked_Elevator_Silph"]] = 0x20 # jr nz + write_bytes(rom_addresses["Option_Locked_Elevator_Celadon"], 0x20) # jr nz + write_bytes(rom_addresses["Option_Locked_Elevator_Silph"], 0x20) # jr nz if world.options.tea: - data[rom_addresses["Option_Tea"]] = 1 - data[rom_addresses["Guard_Drink_List"]] = 0x54 - data[rom_addresses["Guard_Drink_List"] + 1] = 0 - data[rom_addresses["Guard_Drink_List"] + 2] = 0 - write_bytes(data, encode_text("Gee, I have theworst caffeineheadache though." - "Oh wait there,the road's closed."), - rom_addresses["Text_Saffron_Gate"]) + write_bytes(rom_addresses["Option_Tea"], 1) + write_bytes(rom_addresses["Guard_Drink_List"], 0x54) + write_bytes(rom_addresses["Guard_Drink_List"] + 1, 0) + write_bytes(rom_addresses["Guard_Drink_List"] + 2, 0) + write_bytes(rom_addresses["Text_Saffron_Gate"], + encode_text("Gee, I have theworst caffeineheadache though." + "Oh wait there,the road's closed.")) - data[rom_addresses["Tea_Key_Item_A"]] = 0x28 # jr .z - data[rom_addresses["Tea_Key_Item_B"]] = 0x28 # jr .z - data[rom_addresses["Tea_Key_Item_C"]] = 0x28 # jr .z + write_bytes(rom_addresses["Tea_Key_Item_A"], 0x28) # jr .z + write_bytes(rom_addresses["Tea_Key_Item_B"], 0x28) # jr .z + write_bytes(rom_addresses["Tea_Key_Item_C"], 0x28) # jr .z - data[rom_addresses["Fossils_Needed_For_Second_Item"]] = ( - world.options.second_fossil_check_condition.value) + write_bytes(rom_addresses["Fossils_Needed_For_Second_Item"], world.options.second_fossil_check_condition.value) - data[rom_addresses["Option_Lose_Money"]] = int(not world.options.lose_money_on_blackout.value) + write_bytes(rom_addresses["Option_Lose_Money"], int(not world.options.lose_money_on_blackout.value)) if world.options.extra_key_items: - data[rom_addresses['Option_Extra_Key_Items_A']] = 1 - data[rom_addresses['Option_Extra_Key_Items_B']] = 1 - data[rom_addresses['Option_Extra_Key_Items_C']] = 1 - data[rom_addresses['Option_Extra_Key_Items_D']] = 1 - data[rom_addresses["Option_Split_Card_Key"]] = world.options.split_card_key.value - data[rom_addresses["Option_Blind_Trainers"]] = round(world.options.blind_trainers.value * 2.55) - data[rom_addresses["Option_Cerulean_Cave_Badges"]] = world.options.cerulean_cave_badges_condition.value - data[rom_addresses["Option_Cerulean_Cave_Key_Items"]] = world.options.cerulean_cave_key_items_condition.total - write_bytes(data, encode_text(str(world.options.cerulean_cave_badges_condition.value)), rom_addresses["Text_Cerulean_Cave_Badges"]) - write_bytes(data, encode_text(str(world.options.cerulean_cave_key_items_condition.total) + " key items."), rom_addresses["Text_Cerulean_Cave_Key_Items"]) - data[rom_addresses['Option_Encounter_Minimum_Steps']] = world.options.minimum_steps_between_encounters.value - data[rom_addresses['Option_Route23_Badges']] = world.options.victory_road_condition.value - data[rom_addresses['Option_Victory_Road_Badges']] = world.options.route_22_gate_condition.value - data[rom_addresses['Option_Elite_Four_Pokedex']] = world.options.elite_four_pokedex_condition.total - data[rom_addresses['Option_Elite_Four_Key_Items']] = world.options.elite_four_key_items_condition.total - data[rom_addresses['Option_Elite_Four_Badges']] = world.options.elite_four_badges_condition.value - write_bytes(data, encode_text(str(world.options.elite_four_badges_condition.value)), rom_addresses["Text_Elite_Four_Badges"]) - write_bytes(data, encode_text(str(world.options.elite_four_key_items_condition.total) + " key items, and"), rom_addresses["Text_Elite_Four_Key_Items"]) - write_bytes(data, encode_text(str(world.options.elite_four_pokedex_condition.total) + " #MON"), rom_addresses["Text_Elite_Four_Pokedex"]) - write_bytes(data, encode_text(str(world.total_key_items), length=2), rom_addresses["Trainer_Screen_Total_Key_Items"]) - - data[rom_addresses['Option_Viridian_Gym_Badges']] = world.options.viridian_gym_condition.value - data[rom_addresses['Option_EXP_Modifier']] = world.options.exp_modifier.value + write_bytes(rom_addresses["Option_Extra_Key_Items_A"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_B"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_C"], 1) + write_bytes(rom_addresses["Option_Extra_Key_Items_D"], 1) + write_bytes(rom_addresses["Option_Split_Card_Key"], world.options.split_card_key.value) + write_bytes(rom_addresses["Option_Blind_Trainers"], round(world.options.blind_trainers.value * 2.55)) + write_bytes(rom_addresses["Option_Cerulean_Cave_Badges"], world.options.cerulean_cave_badges_condition.value) + write_bytes(rom_addresses["Option_Cerulean_Cave_Key_Items"], world.options.cerulean_cave_key_items_condition.total) + write_bytes(rom_addresses["Text_Cerulean_Cave_Badges"], encode_text(str(world.options.cerulean_cave_badges_condition.value))) + write_bytes(rom_addresses["Text_Cerulean_Cave_Key_Items"], encode_text(str(world.options.cerulean_cave_key_items_condition.total) + " key items.")) + write_bytes(rom_addresses["Option_Encounter_Minimum_Steps"], world.options.minimum_steps_between_encounters.value) + write_bytes(rom_addresses["Option_Route23_Badges"], world.options.victory_road_condition.value) + write_bytes(rom_addresses["Option_Victory_Road_Badges"], world.options.route_22_gate_condition.value) + write_bytes(rom_addresses["Option_Elite_Four_Pokedex"], world.options.elite_four_pokedex_condition.total) + write_bytes(rom_addresses["Option_Elite_Four_Key_Items"], world.options.elite_four_key_items_condition.total) + write_bytes(rom_addresses["Option_Elite_Four_Badges"], world.options.elite_four_badges_condition.value) + write_bytes(rom_addresses["Text_Elite_Four_Badges"], encode_text(str(world.options.elite_four_badges_condition.value))) + write_bytes(rom_addresses["Text_Elite_Four_Key_Items"], encode_text(str(world.options.elite_four_key_items_condition.total) + " key items, and")) + write_bytes(rom_addresses["Text_Elite_Four_Pokedex"], encode_text(str(world.options.elite_four_pokedex_condition.total) + " #MON")) + write_bytes(rom_addresses["Trainer_Screen_Total_Key_Items"], encode_text(str(world.total_key_items), length=2)) + + write_bytes(rom_addresses["Option_Viridian_Gym_Badges"], world.options.viridian_gym_condition.value) + write_bytes(rom_addresses["Option_EXP_Modifier"], world.options.exp_modifier.value) if not world.options.require_item_finder: - data[rom_addresses['Option_Itemfinder']] = 0 # nop + write_bytes(rom_addresses["Option_Itemfinder"], 0) # nop if world.options.extra_strength_boulders: for i in range(0, 3): - data[rom_addresses['Option_Boulders'] + (i * 3)] = 0x15 + write_bytes(rom_addresses["Option_Boulders"] + (i * 3), 0x15) if world.options.extra_key_items: for i in range(0, 4): - data[rom_addresses['Option_Rock_Tunnel_Extra_Items'] + (i * 3)] = 0x15 + write_bytes(rom_addresses["Option_Rock_Tunnel_Extra_Items"] + (i * 3), 0x15) if world.options.old_man == "open_viridian_city": - data[rom_addresses['Option_Old_Man']] = 0x11 - data[rom_addresses['Option_Old_Man_Lying']] = 0x15 - data[rom_addresses['Option_Route3_Guard_B']] = world.options.route_3_condition.value + write_bytes(rom_addresses["Option_Old_Man"], 0x11) + write_bytes(rom_addresses["Option_Old_Man_Lying"], 0x15) + write_bytes(rom_addresses["Option_Route3_Guard_B"], world.options.route_3_condition.value) if world.options.route_3_condition == "open": - data[rom_addresses['Option_Route3_Guard_A']] = 0x11 + write_bytes(rom_addresses["Option_Route3_Guard_A"], 0x11) if not world.options.robbed_house_officer: - data[rom_addresses['Option_Trashed_House_Guard_A']] = 0x15 - data[rom_addresses['Option_Trashed_House_Guard_B']] = 0x11 + write_bytes(rom_addresses["Option_Trashed_House_Guard_A"], 0x15) + write_bytes(rom_addresses["Option_Trashed_House_Guard_B"], 0x11) if world.options.require_pokedex: - data[rom_addresses["Require_Pokedex_A"]] = 1 - data[rom_addresses["Require_Pokedex_B"]] = 1 - data[rom_addresses["Require_Pokedex_C"]] = 1 + write_bytes(rom_addresses["Require_Pokedex_A"], 1) + write_bytes(rom_addresses["Require_Pokedex_B"], 1) + write_bytes(rom_addresses["Require_Pokedex_C"], 1) else: - data[rom_addresses["Require_Pokedex_D"]] = 0x18 # jr + write_bytes(rom_addresses["Require_Pokedex_D"], 0x18) # jr if world.options.dexsanity: - data[rom_addresses["Option_Dexsanity_A"]] = 1 - data[rom_addresses["Option_Dexsanity_B"]] = 1 + write_bytes(rom_addresses["Option_Dexsanity_A"], 1) + write_bytes(rom_addresses["Option_Dexsanity_B"], 1) if world.options.all_pokemon_seen: - data[rom_addresses["Option_Pokedex_Seen"]] = 1 + write_bytes(rom_addresses["Option_Pokedex_Seen"], 1) money = str(world.options.starting_money.value).zfill(6) - data[rom_addresses["Starting_Money_High"]] = int(money[:2], 16) - data[rom_addresses["Starting_Money_Middle"]] = int(money[2:4], 16) - data[rom_addresses["Starting_Money_Low"]] = int(money[4:], 16) - data[rom_addresses["Text_Badges_Needed_Viridian_Gym"]] = encode_text( - str(world.options.viridian_gym_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_A"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_B"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_C"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Rt23_Badges_D"]] = encode_text( - str(world.options.victory_road_condition.value))[0] - data[rom_addresses["Text_Badges_Needed"]] = encode_text( - str(world.options.elite_four_badges_condition.value))[0] - write_bytes(data, encode_text( - " ".join(world.multiworld.get_location("Route 4 Pokemon Center - Pokemon For Sale", world.player).item.name.upper().split()[1:])), - rom_addresses["Text_Magikarp_Salesman"]) + write_bytes(rom_addresses["Starting_Money_High"], int(money[:2], 16)) + write_bytes(rom_addresses["Starting_Money_Middle"], int(money[2:4], 16)) + write_bytes(rom_addresses["Starting_Money_Low"], int(money[4:], 16)) + write_bytes(rom_addresses["Text_Badges_Needed_Viridian_Gym"], + encode_text(str(world.options.viridian_gym_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_A"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_B"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_C"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Rt23_Badges_D"], + encode_text(str(world.options.victory_road_condition.value))[0]) + write_bytes(rom_addresses["Text_Badges_Needed"], + encode_text(str(world.options.elite_four_badges_condition.value))[0]) + write_bytes(rom_addresses["Text_Magikarp_Salesman"], + encode_text(" ".join(world.multiworld.get_location("Route 4 Pokemon Center - Pokemon For Sale", world.player).item.name.upper().split()[1:]))) if world.options.badges_needed_for_hm_moves.value == 0: for hm_move in poke_data.hm_moves: - write_bytes(data, bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]), - rom_addresses["HM_" + hm_move + "_Badge_a"]) + write_bytes(rom_addresses["HM_" + hm_move + "_Badge_a"], [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) elif world.extra_badges: written_badges = {} + badge_codes = {"Boulder Badge": 0x47, "Cascade Badge": 0x4F, + "Thunder Badge": 0x57, "Rainbow Badge": 0x5F, + "Soul Badge": 0x67, "Marsh Badge": 0x6F, + "Volcano Badge": 0x77, "Earth Badge": 0x7F} for hm_move, badge in world.extra_badges.items(): - data[rom_addresses["HM_" + hm_move + "_Badge_b"]] = {"Boulder Badge": 0x47, "Cascade Badge": 0x4F, - "Thunder Badge": 0x57, "Rainbow Badge": 0x5F, - "Soul Badge": 0x67, "Marsh Badge": 0x6F, - "Volcano Badge": 0x77, "Earth Badge": 0x7F}[badge] + write_bytes(rom_addresses["HM_" + hm_move + "_Badge_b"], badge_codes[badge]) move_text = hm_move if badge not in ["Marsh Badge", "Volcano Badge", "Earth Badge"]: move_text = ", " + move_text @@ -467,62 +515,58 @@ def set_trade_mon(address, loc): if badge in written_badges: rom_address += len(written_badges[badge]) move_text = ", " + move_text - write_bytes(data, encode_text(move_text.upper()), rom_address) + write_bytes(rom_address, encode_text(move_text.upper())) written_badges[badge] = move_text for badge in ["Marsh Badge", "Volcano Badge", "Earth Badge"]: if badge not in written_badges: - write_bytes(data, encode_text("Nothing"), rom_addresses["Badge_Text_" + badge.replace(" ", "_")]) + write_bytes(rom_addresses["Badge_Text_" + badge.replace(" ", "_")], encode_text("Nothing")) type_loc = rom_addresses["Type_Chart"] for matchup in world.type_chart: if matchup[2] != 10: # don't needlessly divide damage by 10 and multiply by 10 - data[type_loc] = poke_data.type_ids[matchup[0]] - data[type_loc + 1] = poke_data.type_ids[matchup[1]] - data[type_loc + 2] = matchup[2] + write_bytes(type_loc, [poke_data.type_ids[matchup[0]], poke_data.type_ids[matchup[1]], matchup[2]]) type_loc += 3 - data[type_loc] = 0xFF - data[type_loc + 1] = 0xFF - data[type_loc + 2] = 0xFF + write_bytes(type_loc, b"\xFF\xFF\xFF") if world.options.normalize_encounter_chances.value: chances = [25, 51, 77, 103, 129, 155, 180, 205, 230, 255] for i, chance in enumerate(chances): - data[rom_addresses['Encounter_Chances'] + (i * 2)] = chance + write_bytes(rom_addresses["Encounter_Chances"] + (i * 2), chance) for mon, mon_data in world.local_poke_data.items(): if mon == "Mew": address = rom_addresses["Base_Stats_Mew"] else: address = rom_addresses["Base_Stats"] + (28 * (mon_data["dex"] - 1)) - data[address + 1] = world.local_poke_data[mon]["hp"] - data[address + 2] = world.local_poke_data[mon]["atk"] - data[address + 3] = world.local_poke_data[mon]["def"] - data[address + 4] = world.local_poke_data[mon]["spd"] - data[address + 5] = world.local_poke_data[mon]["spc"] - data[address + 6] = poke_data.type_ids[world.local_poke_data[mon]["type1"]] - data[address + 7] = poke_data.type_ids[world.local_poke_data[mon]["type2"]] - data[address + 8] = world.local_poke_data[mon]["catch rate"] - data[address + 15] = poke_data.moves[world.local_poke_data[mon]["start move 1"]]["id"] - data[address + 16] = poke_data.moves[world.local_poke_data[mon]["start move 2"]]["id"] - data[address + 17] = poke_data.moves[world.local_poke_data[mon]["start move 3"]]["id"] - data[address + 18] = poke_data.moves[world.local_poke_data[mon]["start move 4"]]["id"] - write_bytes(data, world.local_poke_data[mon]["tms"], address + 20) + write_bytes(address + 1, world.local_poke_data[mon]["hp"]) + write_bytes(address + 2, world.local_poke_data[mon]["atk"]) + write_bytes(address + 3, world.local_poke_data[mon]["def"]) + write_bytes(address + 4, world.local_poke_data[mon]["spd"]) + write_bytes(address + 5, world.local_poke_data[mon]["spc"]) + write_bytes(address + 6, poke_data.type_ids[world.local_poke_data[mon]["type1"]]) + write_bytes(address + 7, poke_data.type_ids[world.local_poke_data[mon]["type2"]]) + write_bytes(address + 8, world.local_poke_data[mon]["catch rate"]) + write_bytes(address + 15, poke_data.moves[world.local_poke_data[mon]["start move 1"]]["id"]) + write_bytes(address + 16, poke_data.moves[world.local_poke_data[mon]["start move 2"]]["id"]) + write_bytes(address + 17, poke_data.moves[world.local_poke_data[mon]["start move 3"]]["id"]) + write_bytes(address + 18, poke_data.moves[world.local_poke_data[mon]["start move 4"]]["id"]) + write_bytes(address + 20, world.local_poke_data[mon]["tms"]) if mon in world.learnsets and world.learnsets[mon]: address = rom_addresses["Learnset_" + mon.replace(" ", "")] for i, move in enumerate(world.learnsets[mon]): - data[(address + 1) + i * 2] = poke_data.moves[move]["id"] + write_bytes((address + 1) + i * 2, poke_data.moves[move]["id"]) - data[rom_addresses["Option_Aide_Rt2"]] = world.options.oaks_aide_rt_2.value - data[rom_addresses["Option_Aide_Rt11"]] = world.options.oaks_aide_rt_11.value - data[rom_addresses["Option_Aide_Rt15"]] = world.options.oaks_aide_rt_15.value + write_bytes(rom_addresses["Option_Aide_Rt2"], world.options.oaks_aide_rt_2.value) + write_bytes(rom_addresses["Option_Aide_Rt11"], world.options.oaks_aide_rt_11.value) + write_bytes(rom_addresses["Option_Aide_Rt15"], world.options.oaks_aide_rt_15.value) if world.options.safari_zone_normal_battles.value == 1: - data[rom_addresses["Option_Safari_Zone_Battle_Type"]] = 255 + write_bytes(rom_addresses["Option_Safari_Zone_Battle_Type"], 255) if world.options.reusable_tms.value: - data[rom_addresses["Option_Reusable_TMs"]] = 0xC9 + write_bytes(rom_addresses["Option_Reusable_TMs"], 0xC9) - data[rom_addresses["Option_Always_Half_STAB"]] = int(not world.options.same_type_attack_bonus.value) + write_bytes(rom_addresses["Option_Always_Half_STAB"], int(not world.options.same_type_attack_bonus.value)) if world.options.better_shops: inventory = ["Poke Ball", "Great Ball", "Ultra Ball"] @@ -531,43 +575,45 @@ def set_trade_mon(address, loc): inventory += ["Potion", "Super Potion", "Hyper Potion", "Max Potion", "Full Restore", "Revive", "Antidote", "Awakening", "Burn Heal", "Ice Heal", "Paralyze Heal", "Full Heal", "Repel", "Super Repel", "Max Repel", "Escape Rope"] - shop_data = bytearray([0xFE, len(inventory)]) - shop_data += bytearray([item_table[item].id - 172000000 for item in inventory]) + shop_data = [0xFE, len(inventory)] + shop_data += [item_table[item].id - 172000000 for item in inventory] shop_data.append(0xFF) for shop in range(1, 11): - write_bytes(data, shop_data, rom_addresses[f"Shop{shop}"]) + write_bytes(rom_addresses[f"Shop{shop}"], shop_data) if world.options.stonesanity: - write_bytes(data, bytearray([0xFE, 1, item_table["Poke Doll"].id - 172000000, 0xFF]), rom_addresses[f"Shop_Stones"]) + write_bytes(rom_addresses["Shop_Stones"], [0xFE, 1, item_table["Poke Doll"].id - 172000000, 0xFF]) price = str(world.options.master_ball_price.value).zfill(6) - price = bytearray([int(price[:2], 16), int(price[2:4], 16), int(price[4:], 16)]) - write_bytes(data, price, rom_addresses["Price_Master_Ball"]) # Money values in Red and Blue are weird + price = [int(price[:2], 16), int(price[2:4], 16), int(price[4:], 16)] + write_bytes(rom_addresses["Price_Master_Ball"], price) # Money values in Red and Blue are weird - for item in reversed(world.multiworld.precollected_items[world.player]): - if data[rom_addresses["Start_Inventory"] + item.code - 172000000] < 255: - data[rom_addresses["Start_Inventory"] + item.code - 172000000] += 1 + from collections import Counter + start_inventory = Counter(item.code for item in reversed(world.multiworld.precollected_items[world.player])) + for item, value in start_inventory.items(): + write_bytes(rom_addresses["Start_Inventory"] + item - 172000000, min(value, 255)) - set_mon_palettes(world, random, data) + set_mon_palettes(world, patch) for move_data in world.local_move_data.values(): if move_data["id"] == 0: continue address = rom_addresses["Move_Data"] + ((move_data["id"] - 1) * 6) - write_bytes(data, bytearray([move_data["id"], move_data["effect"], move_data["power"], - poke_data.type_ids[move_data["type"]], round(move_data["accuracy"] * 2.55), move_data["pp"]]), address) + write_bytes(address, [move_data["id"], move_data["effect"], move_data["power"], + poke_data.type_ids[move_data["type"]], round(move_data["accuracy"] * 2.55), + move_data["pp"]]) - TM_IDs = bytearray([poke_data.moves[move]["id"] for move in world.local_tms]) - write_bytes(data, TM_IDs, rom_addresses["TM_Moves"]) + TM_IDs = [poke_data.moves[move]["id"] for move in world.local_tms] + write_bytes(rom_addresses["TM_Moves"], TM_IDs) if world.options.randomize_rock_tunnel: - seed = randomize_rock_tunnel(data, random) - write_bytes(data, encode_text(f"SEED: {seed}"), rom_addresses["Text_Rock_Tunnel_Sign"]) + seed = randomize_rock_tunnel(patch, world.random) + write_bytes(rom_addresses["Text_Rock_Tunnel_Sign"], encode_text(f"SEED: {seed}")) mons = [mon["id"] for mon in poke_data.pokemon_data.values()] - random.shuffle(mons) - data[rom_addresses['Title_Mon_First']] = mons.pop() + world.random.shuffle(mons) + write_bytes(rom_addresses["Title_Mon_First"], mons.pop()) for mon in range(0, 16): - data[rom_addresses['Title_Mons'] + mon] = mons.pop() + write_bytes(rom_addresses["Title_Mons"] + mon, mons.pop()) if world.options.game_version.value: mons.sort(key=lambda mon: 0 if mon == world.multiworld.get_location("Oak's Lab - Starter 1", world.player).item.name else 1 if mon == world.multiworld.get_location("Oak's Lab - Starter 2", world.player).item.name else @@ -576,34 +622,34 @@ def set_trade_mon(address, loc): mons.sort(key=lambda mon: 0 if mon == world.multiworld.get_location("Oak's Lab - Starter 2", world.player).item.name else 1 if mon == world.multiworld.get_location("Oak's Lab - Starter 1", world.player).item.name else 2 if mon == world.multiworld.get_location("Oak's Lab - Starter 3", world.player).item.name else 3) - write_bytes(data, encode_text(world.multiworld.seed_name[-20:], 20, True), rom_addresses['Title_Seed']) + write_bytes(rom_addresses["Title_Seed"], encode_text(world.multiworld.seed_name[-20:], 20, True)) slot_name = world.multiworld.player_name[world.player] slot_name.replace("@", " ") slot_name.replace("<", " ") slot_name.replace(">", " ") - write_bytes(data, encode_text(slot_name, 16, True, True), rom_addresses['Title_Slot_Name']) + write_bytes(rom_addresses["Title_Slot_Name"], encode_text(slot_name, 16, True, True)) if world.trainer_name == "choose_in_game": - data[rom_addresses["Skip_Player_Name"]] = 0 + write_bytes(rom_addresses["Skip_Player_Name"], 0) else: - write_bytes(data, world.trainer_name, rom_addresses['Player_Name']) + write_bytes(rom_addresses["Player_Name"], world.trainer_name) if world.rival_name == "choose_in_game": - data[rom_addresses["Skip_Rival_Name"]] = 0 + write_bytes(rom_addresses["Skip_Rival_Name"], 0) else: - write_bytes(data, world.rival_name, rom_addresses['Rival_Name']) + write_bytes(rom_addresses["Rival_Name"], world.rival_name) - data[0xFF00] = 2 # client compatibility version - rom_name = bytearray(f'AP{Utils.__version__.replace(".", "")[0:3]}_{world.player}_{world.multiworld.seed:11}\0', - 'utf8')[:21] + write_bytes(0xFF00, 2) # client compatibility version + rom_name = bytearray(f"AP{Utils.__version__.replace('.', '')[0:3]}_{world.player}_{world.multiworld.seed:11}\0", + "utf8")[:21] rom_name.extend([0] * (21 - len(rom_name))) - write_bytes(data, rom_name, 0xFFC6) - write_bytes(data, world.multiworld.seed_name.encode(), 0xFFDB) - write_bytes(data, world.multiworld.player_name[world.player].encode(), 0xFFF0) + write_bytes(0xFFC6, rom_name) + write_bytes(0xFFDB, world.multiworld.seed_name.encode()) + write_bytes(0xFFF0, world.multiworld.player_name[world.player].encode()) world.finished_level_scaling.wait() - write_quizzes(world, data, random) + write_quizzes(world, patch) for location in world.multiworld.get_locations(world.player): if location.party_data: @@ -617,18 +663,18 @@ def set_trade_mon(address, loc): levels = party["level"] for address, party in zip(addresses, parties): if isinstance(levels, int): - data[address] = levels + write_bytes(address, levels) address += 1 for mon in party: - data[address] = poke_data.pokemon_data[mon]["id"] + write_bytes(address, poke_data.pokemon_data[mon]["id"]) address += 1 else: address += 1 for level, mon in zip(levels, party): - data[address] = level - data[address + 1] = poke_data.pokemon_data[mon]["id"] + write_bytes(address, [level, poke_data.pokemon_data[mon]["id"]]) address += 2 - assert data[address] == 0 or location.name == "Fossil Level - Trainer Parties" + # This assert can't be done with procedure patch tokens. + # assert data[address] == 0 or location.name == "Fossil Level - Trainer Parties" continue elif location.rom_address is None: continue @@ -639,85 +685,24 @@ def set_trade_mon(address, loc): rom_address = [rom_address] for address in rom_address: if location.item.name in poke_data.pokemon_data.keys(): - data[address] = poke_data.pokemon_data[location.item.name]["id"] + write_bytes(address, poke_data.pokemon_data[location.item.name]["id"]) elif " ".join(location.item.name.split()[1:]) in poke_data.pokemon_data.keys(): - data[address] = poke_data.pokemon_data[" ".join(location.item.name.split()[1:])]["id"] + write_bytes(address, poke_data.pokemon_data[" ".join(location.item.name.split()[1:])]["id"]) else: item_id = world.item_name_to_id[location.item.name] - 172000000 if item_id > 255: item_id -= 256 - data[address] = item_id + write_bytes(address, item_id) if location.level: - data[location.level_address] = location.level + write_bytes(location.level_address, location.level) else: rom_address = location.rom_address if not isinstance(rom_address, list): rom_address = [rom_address] for address in rom_address: - data[address] = 0x2C # AP Item - - outfilepname = f'_P{world.player}' - outfilepname += f"_{world.multiworld.get_file_safe_player_name(world.player).replace(' ', '_')}" \ - if world.multiworld.player_name[world.player] != 'Player%d' % world.player else '' - rompath = os.path.join(output_directory, f'AP_{world.multiworld.seed_name}{outfilepname}.gb') - with open(rompath, 'wb') as outfile: - outfile.write(data) - if world.options.game_version.current_key == "red": - patch = RedDeltaPatch(os.path.splitext(rompath)[0] + RedDeltaPatch.patch_file_ending, player=world.player, - player_name=world.multiworld.player_name[world.player], patched_path=rompath) - else: - patch = BlueDeltaPatch(os.path.splitext(rompath)[0] + BlueDeltaPatch.patch_file_ending, player=world.player, - player_name=world.multiworld.player_name[world.player], patched_path=rompath) - - patch.write() - os.unlink(rompath) - - -def write_bytes(data, byte_array, address): - for byte in byte_array: - data[address] = byte - address += 1 - - -def get_base_rom_bytes(game_version: str, hash: str="") -> bytes: - file_name = get_base_rom_path(game_version) - with open(file_name, "rb") as file: - base_rom_bytes = bytes(file.read()) - if hash: - basemd5 = hashlib.md5() - basemd5.update(base_rom_bytes) - if hash != basemd5.hexdigest(): - raise Exception(f"Supplied Base Rom does not match known MD5 for Pokémon {game_version.title()} UE " - "release. Get the correct game and version, then dump it") - return base_rom_bytes - + write_bytes(address, 0x2C) # AP Item -def get_base_rom_path(game_version: str) -> str: - options = Utils.get_options() - file_name = options["pokemon_rb_options"][f"{game_version}_rom_file"] - if not os.path.exists(file_name): - file_name = Utils.user_path(file_name) - return file_name - - -class BlueDeltaPatch(APDeltaPatch): - patch_file_ending = ".apblue" - hash = "50927e843568814f7ed45ec4f944bd8b" - game_version = "blue" - game = "Pokemon Red and Blue" - result_file_ending = ".gb" - @classmethod - def get_source_data(cls) -> bytes: - return get_base_rom_bytes(cls.game_version, cls.hash) - - -class RedDeltaPatch(APDeltaPatch): - patch_file_ending = ".apred" - hash = "3d45c1ee9abd5738df46d2bdda8b57dc" - game_version = "red" - game = "Pokemon Red and Blue" - result_file_ending = ".gb" - @classmethod - def get_source_data(cls) -> bytes: - return get_base_rom_bytes(cls.game_version, cls.hash) + patch.write_file("token_data.bin", patch.get_token_binary()) + out_file_name = world.multiworld.get_out_file_name_base(world.player) + patch.write(os.path.join(output_directory, f"{out_file_name}{patch.patch_file_ending}")) diff --git a/worlds/raft/__init__.py b/worlds/raft/__init__.py index 3e33b417c04b..74ab9291b26e 100644 --- a/worlds/raft/__init__.py +++ b/worlds/raft/__init__.py @@ -40,6 +40,8 @@ class RaftWorld(World): options_dataclass = RaftOptions options: RaftOptions + extraItemNamePool: list[str] | None = None + required_client_version = (0, 3, 4) def create_items(self): @@ -52,52 +54,52 @@ def create_items(self): pool = [] frequencyItems = [] for item in item_table: - raft_item = self.create_item_replaceAsNecessary(item["name"]) + raft_item = self.create_item(self.replace_item_name_as_necessary(item["name"])) if isFillingFrequencies and "Frequency" in item["name"]: frequencyItems.append(raft_item) else: pool.append(raft_item) - extraItemNamePool = [] + self.extraItemNamePool = [] extras = len(location_table) - len(item_table) - 1 # Victory takes up 1 unaccounted-for slot - if extras > 0: - if (self.options.filler_item_types != self.options.filler_item_types.option_duplicates): # Use resource packs - for packItem in resourcePackItems: - for i in range(minimumResourcePackAmount, maximumResourcePackAmount + 1): - extraItemNamePool.append(createResourcePackName(i, packItem)) - - if self.options.filler_item_types != self.options.filler_item_types.option_resource_packs: # Use duplicate items - dupeItemPool = item_table.copy() - # Remove frequencies if necessary - if self.options.island_frequency_locations != self.options.island_frequency_locations.option_anywhere: # Not completely random locations - # If we let frequencies stay in with progressive-frequencies, the progressive-frequency item - # will be included 7 times. This is a massive flood of progressive-frequency items, so we - # instead add progressive-frequency as its own item a smaller amount of times to prevent - # flooding the duplicate item pool with them. - if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: - for _ in range(2): - # Progressives are not in item_pool, need to create faux item for duplicate item pool - # This can still be filtered out later by duplicate_items setting - dupeItemPool.append({ "name": "progressive-frequency", "progression": True }) # Progressive frequencies need to be included - # Always remove non-progressive Frequency items - dupeItemPool = (itm for itm in dupeItemPool if "Frequency" not in itm["name"]) - - # Remove progression or non-progression items if necessary - if (self.options.duplicate_items == self.options.duplicate_items.option_progression): # Progression only - dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == True) - elif (self.options.duplicate_items == self.options.duplicate_items.option_non_progression): # Non-progression only - dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == False) - - dupeItemPool = list(dupeItemPool) - # Finally, add items as necessary - if len(dupeItemPool) > 0: - for item in dupeItemPool: - extraItemNamePool.append(item["name"]) + + if (self.options.filler_item_types != self.options.filler_item_types.option_duplicates): # Use resource packs + for packItem in resourcePackItems: + for i in range(minimumResourcePackAmount, maximumResourcePackAmount + 1): + self.extraItemNamePool.append(createResourcePackName(i, packItem)) + + if self.options.filler_item_types != self.options.filler_item_types.option_resource_packs: # Use duplicate items + dupeItemPool = item_table.copy() + # Remove frequencies if necessary + if self.options.island_frequency_locations != self.options.island_frequency_locations.option_anywhere: # Not completely random locations + # If we let frequencies stay in with progressive-frequencies, the progressive-frequency item + # will be included 7 times. This is a massive flood of progressive-frequency items, so we + # instead add progressive-frequency as its own item a smaller amount of times to prevent + # flooding the duplicate item pool with them. + if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: + for _ in range(2): + # Progressives are not in item_pool, need to create faux item for duplicate item pool + # This can still be filtered out later by duplicate_items setting + dupeItemPool.append({ "name": "progressive-frequency", "progression": True }) # Progressive frequencies need to be included + # Always remove non-progressive Frequency items + dupeItemPool = (itm for itm in dupeItemPool if "Frequency" not in itm["name"]) + + # Remove progression or non-progression items if necessary + if (self.options.duplicate_items == self.options.duplicate_items.option_progression): # Progression only + dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == True) + elif (self.options.duplicate_items == self.options.duplicate_items.option_non_progression): # Non-progression only + dupeItemPool = (itm for itm in dupeItemPool if itm["progression"] == False) + + dupeItemPool = list(dupeItemPool) + # Finally, add items as necessary + for item in dupeItemPool: + self.extraItemNamePool.append(self.replace_item_name_as_necessary(item)) - if (len(extraItemNamePool) > 0): - for randomItem in self.random.choices(extraItemNamePool, k=extras): - raft_item = self.create_item_replaceAsNecessary(randomItem) - pool.append(raft_item) + assert self.extraItemNamePool, f"Don't know what extra items to create for {self.player_name}." + + for randomItem in self.random.choices(self.extraItemNamePool, k=extras): + raft_item = self.create_item(randomItem) + pool.append(raft_item) self.multiworld.itempool += pool @@ -108,19 +110,35 @@ def create_items(self): if frequencyItems: self.place_frequencyItems(frequencyItems) + def get_filler_item_name(self) -> str: + # A normal Raft world will have an extraItemNamePool defined after create_items. + if self.extraItemNamePool: + return self.random.choice(self.extraItemNamePool) + + # If this is a "fake" world, e.g. item links with link replacement: Resource packs are always be safe to create + minRPSpecified = self.options.minimum_resource_pack_amount.value + maxRPSpecified = self.options.maximum_resource_pack_amount.value + minimumResourcePackAmount = min(minRPSpecified, maxRPSpecified) + maximumResourcePackAmount = max(minRPSpecified, maxRPSpecified) + resource_amount = self.random.randint(minimumResourcePackAmount, maximumResourcePackAmount) + resource_type = self.random.choice(resourcePackItems) + return createResourcePackName(resource_amount, resource_type) + def set_rules(self): set_rules(self.multiworld, self.player) def create_regions(self): create_regions(self.multiworld, self.player) - - def create_item_replaceAsNecessary(self, name: str) -> Item: - isFrequency = "Frequency" in name - shouldUseProgressive = bool((isFrequency and self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive) - or (not isFrequency and self.options.progressive_items)) - if shouldUseProgressive and name in progressive_table: - name = progressive_table[name] - return self.create_item(name) + + def replace_item_name_as_necessary(self, name: str) -> str: + if name not in progressive_table: + return name + if "Frequency" in name: + if self.options.island_frequency_locations == self.options.island_frequency_locations.option_progressive: + return progressive_table[name] + elif self.options.progressive_items: + return progressive_table[name] + return name def create_item(self, name: str) -> Item: item = lookup_name_to_item[name] diff --git a/worlds/raft/docs/setup_en.md b/worlds/raft/docs/setup_en.md index 16e7883776c3..25e2c16bc536 100644 --- a/worlds/raft/docs/setup_en.md +++ b/worlds/raft/docs/setup_en.md @@ -45,7 +45,8 @@ ## Multiplayer Raft You're able to have multiple Raft players on a single Raftipelago world. This will work, with a few notes: -- Only the player that creates/loads the world can connect to Archipelago (this is the "host" of the Raft world). Other players do not need to connect; everything will be routed through the the host. +- Every player that joins the Raft world must have the Raftipelago mod loaded. +- Only the player that creates/loads the world can connect to Archipelago (this is the "host" of the Raft world). Other players do not need to run */connect*; everything will be routed through the the host. - Players other than the host will be labeled as a "Raft Player (Steam name)" when using ingame chat, which will be routed through Archipelago chat. - Ingame chat will only work when the host is connected to the Archipelago server. diff --git a/worlds/raft/progressives.json b/worlds/raft/progressives.json index 11bd614ab04b..6f3900738ed2 100644 --- a/worlds/raft/progressives.json +++ b/worlds/raft/progressives.json @@ -30,7 +30,7 @@ "Steering Wheel": "progressive-engine", "Engine controls": "progressive-engine", "Scarecrow": "progressive-scarecrow", - "Advanced scarecrow": "progressive-scarecrow", + "Advanced Scarecrow": "progressive-scarecrow", "Simple collection net": "progressive-net", "Advanced collection net": "progressive-net", "Storage": "progressive-storage", diff --git a/worlds/rogue_legacy/Items.py b/worlds/rogue_legacy/Items.py deleted file mode 100644 index efa24df05ac2..000000000000 --- a/worlds/rogue_legacy/Items.py +++ /dev/null @@ -1,111 +0,0 @@ -from typing import Dict, NamedTuple, Optional - -from BaseClasses import Item, ItemClassification - - -class RLItem(Item): - game: str = "Rogue Legacy" - - -class RLItemData(NamedTuple): - category: str - code: Optional[int] = None - classification: ItemClassification = ItemClassification.filler - max_quantity: int = 1 - weight: int = 1 - - -def get_items_by_category(category: str) -> Dict[str, RLItemData]: - item_dict: Dict[str, RLItemData] = {} - for name, data in item_table.items(): - if data.category == category: - item_dict.setdefault(name, data) - - return item_dict - - -item_table: Dict[str, RLItemData] = { - # Vendors - "Blacksmith": RLItemData("Vendors", 90_000, ItemClassification.progression), - "Enchantress": RLItemData("Vendors", 90_001, ItemClassification.progression), - "Architect": RLItemData("Vendors", 90_002, ItemClassification.useful), - - # Classes - "Progressive Knights": RLItemData("Classes", 90_003, ItemClassification.useful, 2), - "Progressive Mages": RLItemData("Classes", 90_004, ItemClassification.useful, 2), - "Progressive Barbarians": RLItemData("Classes", 90_005, ItemClassification.useful, 2), - "Progressive Knaves": RLItemData("Classes", 90_006, ItemClassification.useful, 2), - "Progressive Shinobis": RLItemData("Classes", 90_007, ItemClassification.useful, 2), - "Progressive Miners": RLItemData("Classes", 90_008, ItemClassification.useful, 2), - "Progressive Liches": RLItemData("Classes", 90_009, ItemClassification.useful, 2), - "Progressive Spellthieves": RLItemData("Classes", 90_010, ItemClassification.useful, 2), - "Dragons": RLItemData("Classes", 90_096, ItemClassification.progression), - "Traitors": RLItemData("Classes", 90_097, ItemClassification.useful), - - # Skills - "Health Up": RLItemData("Skills", 90_013, ItemClassification.progression_skip_balancing, 15), - "Mana Up": RLItemData("Skills", 90_014, ItemClassification.progression_skip_balancing, 15), - "Attack Up": RLItemData("Skills", 90_015, ItemClassification.progression_skip_balancing, 15), - "Magic Damage Up": RLItemData("Skills", 90_016, ItemClassification.progression_skip_balancing, 15), - "Armor Up": RLItemData("Skills", 90_017, ItemClassification.useful, 15), - "Equip Up": RLItemData("Skills", 90_018, ItemClassification.useful, 5), - "Crit Chance Up": RLItemData("Skills", 90_019, ItemClassification.useful, 5), - "Crit Damage Up": RLItemData("Skills", 90_020, ItemClassification.useful, 5), - "Down Strike Up": RLItemData("Skills", 90_021), - "Gold Gain Up": RLItemData("Skills", 90_022), - "Potion Efficiency Up": RLItemData("Skills", 90_023), - "Invulnerability Time Up": RLItemData("Skills", 90_024), - "Mana Cost Down": RLItemData("Skills", 90_025), - "Death Defiance": RLItemData("Skills", 90_026, ItemClassification.useful), - "Haggling": RLItemData("Skills", 90_027, ItemClassification.useful), - "Randomize Children": RLItemData("Skills", 90_028, ItemClassification.useful), - - # Blueprints - "Progressive Blueprints": RLItemData("Blueprints", 90_055, ItemClassification.useful, 15), - "Squire Blueprints": RLItemData("Blueprints", 90_040, ItemClassification.useful), - "Silver Blueprints": RLItemData("Blueprints", 90_041, ItemClassification.useful), - "Guardian Blueprints": RLItemData("Blueprints", 90_042, ItemClassification.useful), - "Imperial Blueprints": RLItemData("Blueprints", 90_043, ItemClassification.useful), - "Royal Blueprints": RLItemData("Blueprints", 90_044, ItemClassification.useful), - "Knight Blueprints": RLItemData("Blueprints", 90_045, ItemClassification.useful), - "Ranger Blueprints": RLItemData("Blueprints", 90_046, ItemClassification.useful), - "Sky Blueprints": RLItemData("Blueprints", 90_047, ItemClassification.useful), - "Dragon Blueprints": RLItemData("Blueprints", 90_048, ItemClassification.useful), - "Slayer Blueprints": RLItemData("Blueprints", 90_049, ItemClassification.useful), - "Blood Blueprints": RLItemData("Blueprints", 90_050, ItemClassification.useful), - "Sage Blueprints": RLItemData("Blueprints", 90_051, ItemClassification.useful), - "Retribution Blueprints": RLItemData("Blueprints", 90_052, ItemClassification.useful), - "Holy Blueprints": RLItemData("Blueprints", 90_053, ItemClassification.useful), - "Dark Blueprints": RLItemData("Blueprints", 90_054, ItemClassification.useful), - - # Runes - "Vault Runes": RLItemData("Runes", 90_060, ItemClassification.progression), - "Sprint Runes": RLItemData("Runes", 90_061, ItemClassification.progression), - "Vampire Runes": RLItemData("Runes", 90_062, ItemClassification.useful), - "Sky Runes": RLItemData("Runes", 90_063, ItemClassification.progression), - "Siphon Runes": RLItemData("Runes", 90_064, ItemClassification.useful), - "Retaliation Runes": RLItemData("Runes", 90_065), - "Bounty Runes": RLItemData("Runes", 90_066), - "Haste Runes": RLItemData("Runes", 90_067), - "Curse Runes": RLItemData("Runes", 90_068), - "Grace Runes": RLItemData("Runes", 90_069), - "Balance Runes": RLItemData("Runes", 90_070, ItemClassification.useful), - - # Junk - "Triple Stat Increase": RLItemData("Filler", 90_030, weight=6), - "1000 Gold": RLItemData("Filler", 90_031, weight=3), - "3000 Gold": RLItemData("Filler", 90_032, weight=2), - "5000 Gold": RLItemData("Filler", 90_033, weight=1), -} - -event_item_table: Dict[str, RLItemData] = { - "Defeat Khidr": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Alexander": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Ponce de Leon": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Herodotus": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Neo Khidr": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Alexander IV": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Ponce de Freon": RLItemData("Event", classification=ItemClassification.progression), - "Defeat Astrodotus": RLItemData("Event", classification=ItemClassification.progression), - "Defeat The Fountain": RLItemData("Event", classification=ItemClassification.progression), -} diff --git a/worlds/rogue_legacy/Locations.py b/worlds/rogue_legacy/Locations.py deleted file mode 100644 index db9e1db3b09a..000000000000 --- a/worlds/rogue_legacy/Locations.py +++ /dev/null @@ -1,94 +0,0 @@ -from typing import Dict, NamedTuple, Optional - -from BaseClasses import Location - - -class RLLocation(Location): - game: str = "Rogue Legacy" - - -class RLLocationData(NamedTuple): - category: str - code: Optional[int] = None - - -def get_locations_by_category(category: str) -> Dict[str, RLLocationData]: - location_dict: Dict[str, RLLocationData] = {} - for name, data in location_table.items(): - if data.category == category: - location_dict.setdefault(name, data) - - return location_dict - - -location_table: Dict[str, RLLocationData] = { - # Manor Renovation - "Manor - Ground Road": RLLocationData("Manor", 91_000), - "Manor - Main Base": RLLocationData("Manor", 91_001), - "Manor - Main Bottom Window": RLLocationData("Manor", 91_002), - "Manor - Main Top Window": RLLocationData("Manor", 91_003), - "Manor - Main Rooftop": RLLocationData("Manor", 91_004), - "Manor - Left Wing Base": RLLocationData("Manor", 91_005), - "Manor - Left Wing Window": RLLocationData("Manor", 91_006), - "Manor - Left Wing Rooftop": RLLocationData("Manor", 91_007), - "Manor - Left Big Base": RLLocationData("Manor", 91_008), - "Manor - Left Big Upper 1": RLLocationData("Manor", 91_009), - "Manor - Left Big Upper 2": RLLocationData("Manor", 91_010), - "Manor - Left Big Windows": RLLocationData("Manor", 91_011), - "Manor - Left Big Rooftop": RLLocationData("Manor", 91_012), - "Manor - Left Far Base": RLLocationData("Manor", 91_013), - "Manor - Left Far Roof": RLLocationData("Manor", 91_014), - "Manor - Left Extension": RLLocationData("Manor", 91_015), - "Manor - Left Tree 1": RLLocationData("Manor", 91_016), - "Manor - Left Tree 2": RLLocationData("Manor", 91_017), - "Manor - Right Wing Base": RLLocationData("Manor", 91_018), - "Manor - Right Wing Window": RLLocationData("Manor", 91_019), - "Manor - Right Wing Rooftop": RLLocationData("Manor", 91_020), - "Manor - Right Big Base": RLLocationData("Manor", 91_021), - "Manor - Right Big Upper": RLLocationData("Manor", 91_022), - "Manor - Right Big Rooftop": RLLocationData("Manor", 91_023), - "Manor - Right High Base": RLLocationData("Manor", 91_024), - "Manor - Right High Upper": RLLocationData("Manor", 91_025), - "Manor - Right High Tower": RLLocationData("Manor", 91_026), - "Manor - Right Extension": RLLocationData("Manor", 91_027), - "Manor - Right Tree": RLLocationData("Manor", 91_028), - "Manor - Observatory Base": RLLocationData("Manor", 91_029), - "Manor - Observatory Telescope": RLLocationData("Manor", 91_030), - - # Boss Rewards - "Castle Hamson Boss Reward": RLLocationData("Boss", 91_100), - "Forest Abkhazia Boss Reward": RLLocationData("Boss", 91_102), - "The Maya Boss Reward": RLLocationData("Boss", 91_104), - "Land of Darkness Boss Reward": RLLocationData("Boss", 91_106), - - # Special Locations - "Jukebox": RLLocationData("Special", 91_200), - "Painting": RLLocationData("Special", 91_201), - "Cheapskate Elf's Game": RLLocationData("Special", 91_202), - "Carnival": RLLocationData("Special", 91_203), - - # Diaries - **{f"Diary {i+1}": RLLocationData("Diary", 91_300 + i) for i in range(0, 25)}, - - # Chests - **{f"Castle Hamson - Chest {i+1}": RLLocationData("Chests", 91_600 + i) for i in range(0, 50)}, - **{f"Forest Abkhazia - Chest {i+1}": RLLocationData("Chests", 91_700 + i) for i in range(0, 50)}, - **{f"The Maya - Chest {i+1}": RLLocationData("Chests", 91_800 + i) for i in range(0, 50)}, - **{f"Land of Darkness - Chest {i+1}": RLLocationData("Chests", 91_900 + i) for i in range(0, 50)}, - **{f"Chest {i+1}": RLLocationData("Chests", 92_000 + i) for i in range(0, 200)}, - - # Fairy Chests - **{f"Castle Hamson - Fairy Chest {i+1}": RLLocationData("Fairies", 91_400 + i) for i in range(0, 15)}, - **{f"Forest Abkhazia - Fairy Chest {i+1}": RLLocationData("Fairies", 91_450 + i) for i in range(0, 15)}, - **{f"The Maya - Fairy Chest {i+1}": RLLocationData("Fairies", 91_500 + i) for i in range(0, 15)}, - **{f"Land of Darkness - Fairy Chest {i+1}": RLLocationData("Fairies", 91_550 + i) for i in range(0, 15)}, - **{f"Fairy Chest {i+1}": RLLocationData("Fairies", 92_200 + i) for i in range(0, 60)}, -} - -event_location_table: Dict[str, RLLocationData] = { - "Castle Hamson Boss Room": RLLocationData("Event"), - "Forest Abkhazia Boss Room": RLLocationData("Event"), - "The Maya Boss Room": RLLocationData("Event"), - "Land of Darkness Boss Room": RLLocationData("Event"), - "Fountain Room": RLLocationData("Event"), -} diff --git a/worlds/rogue_legacy/Options.py b/worlds/rogue_legacy/Options.py deleted file mode 100644 index 139ff6094427..000000000000 --- a/worlds/rogue_legacy/Options.py +++ /dev/null @@ -1,387 +0,0 @@ -from Options import Choice, Range, Toggle, DeathLink, DefaultOnToggle, OptionSet, PerGameCommonOptions - -from dataclasses import dataclass - - -class StartingGender(Choice): - """ - Determines the gender of your initial 'Sir Lee' character. - """ - display_name = "Starting Gender" - option_sir = 0 - option_lady = 1 - alias_male = 0 - alias_female = 1 - default = "random" - - -class StartingClass(Choice): - """ - Determines the starting class of your initial 'Sir Lee' character. - """ - display_name = "Starting Class" - option_knight = 0 - option_mage = 1 - option_barbarian = 2 - option_knave = 3 - option_shinobi = 4 - option_miner = 5 - option_spellthief = 6 - option_lich = 7 - default = 0 - - -class NewGamePlus(Choice): - """ - Puts the castle in new game plus mode which vastly increases enemy level, but increases gold gain by 50%. Not - recommended for those inexperienced to Rogue Legacy! - """ - display_name = "New Game Plus" - option_normal = 0 - option_new_game_plus = 1 - option_new_game_plus_2 = 2 - alias_hard = 1 - alias_brutal = 2 - default = 0 - - -class LevelScaling(Range): - """ - A percentage modifier for scaling enemy level as you continue throughout the castle. 100 means enemies will have - 100% level scaling (normal). Setting this too high will result in enemies with absurdly high levels, you have been - warned. - """ - display_name = "Enemy Level Scaling Percentage" - range_start = 1 - range_end = 300 - default = 100 - - -class FairyChestsPerZone(Range): - """ - Determines the number of Fairy Chests in a given zone that contain items. After these have been checked, only stat - bonuses can be found in Fairy Chests. - """ - display_name = "Fairy Chests Per Zone" - range_start = 0 - range_end = 15 - default = 1 - - -class ChestsPerZone(Range): - """ - Determines the number of Non-Fairy Chests in a given zone that contain items. After these have been checked, only - gold or stat bonuses can be found in Chests. - """ - display_name = "Chests Per Zone" - range_start = 20 - range_end = 50 - default = 20 - - -class UniversalFairyChests(Toggle): - """ - Determines if fairy chests should be combined into one pool instead of per zone, similar to Risk of Rain 2. - """ - display_name = "Universal Fairy Chests" - - -class UniversalChests(Toggle): - """ - Determines if non-fairy chests should be combined into one pool instead of per zone, similar to Risk of Rain 2. - """ - display_name = "Universal Non-Fairy Chests" - - -class Vendors(Choice): - """ - Determines where to place the Blacksmith and Enchantress unlocks in logic (or start with them unlocked). - """ - display_name = "Vendors" - option_start_unlocked = 0 - option_early = 1 - option_normal = 2 - option_anywhere = 3 - default = 1 - - -class Architect(Choice): - """ - Determines where the Architect sits in the item pool. - """ - display_name = "Architect" - option_start_unlocked = 0 - option_early = 1 - option_anywhere = 2 - option_disabled = 3 - alias_normal = 2 - default = 2 - - -class ArchitectFee(Range): - """ - Determines how large of a percentage the architect takes from the player when utilizing his services. 100 means he - takes all your gold. 0 means his services are free. - """ - display_name = "Architect Fee Percentage" - range_start = 0 - range_end = 100 - default = 40 - - -class DisableCharon(Toggle): - """ - Prevents Charon from taking your money when you re-enter the castle. Also removes Haggling from the Item Pool. - """ - display_name = "Disable Charon" - - -class RequirePurchasing(DefaultOnToggle): - """ - Determines where you will be required to purchase equipment and runes from the Blacksmith and Enchantress before - equipping them. If you disable require purchasing, Manor Renovations are scaled to take this into account. - """ - display_name = "Require Purchasing" - - -class ProgressiveBlueprints(Toggle): - """ - Instead of shuffling blueprints randomly into the pool, blueprint unlocks are progressively unlocked. You would get - Squire first, then Knight, etc., until finally Dark. - """ - display_name = "Progressive Blueprints" - - -class GoldGainMultiplier(Choice): - """ - Adjusts the multiplier for gaining gold from all sources. - """ - display_name = "Gold Gain Multiplier" - option_normal = 0 - option_quarter = 1 - option_half = 2 - option_double = 3 - option_quadruple = 4 - default = 0 - - -class NumberOfChildren(Range): - """ - Determines the number of offspring you can choose from on the lineage screen after a death. - """ - display_name = "Number of Children" - range_start = 1 - range_end = 5 - default = 3 - - -class AdditionalLadyNames(OptionSet): - """ - Set of additional names your potential offspring can have. If Allow Default Names is disabled, this is the only list - of names your children can have. The first value will also be your initial character's name depending on Starting - Gender. - """ - display_name = "Additional Lady Names" - -class AdditionalSirNames(OptionSet): - """ - Set of additional names your potential offspring can have. If Allow Default Names is disabled, this is the only list - of names your children can have. The first value will also be your initial character's name depending on Starting - Gender. - """ - display_name = "Additional Sir Names" - - -class AllowDefaultNames(DefaultOnToggle): - """ - Determines if the default names defined in the vanilla game are allowed to be used. Warning: Your world will not - generate if the number of Additional Names defined is less than the Number of Children value. - """ - display_name = "Allow Default Names" - - -class CastleScaling(Range): - """ - Adjusts the scaling factor for how big a castle can be. Larger castles scale enemies quicker and also take longer - to generate. 100 means normal castle size. - """ - display_name = "Castle Size Scaling Percentage" - range_start = 50 - range_end = 300 - default = 100 - - -class ChallengeBossKhidr(Choice): - """ - Determines if Neo Khidr replaces Khidr in their boss room. - """ - display_name = "Khidr" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossAlexander(Choice): - """ - Determines if Alexander the IV replaces Alexander in their boss room. - """ - display_name = "Alexander" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossLeon(Choice): - """ - Determines if Ponce de Freon replaces Ponce de Leon in their boss room. - """ - display_name = "Ponce de Leon" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class ChallengeBossHerodotus(Choice): - """ - Determines if Astrodotus replaces Herodotus in their boss room. - """ - display_name = "Herodotus" - option_vanilla = 0 - option_challenge = 1 - default = 0 - - -class HealthUpPool(Range): - """ - Determines the number of Health Ups in the item pool. - """ - display_name = "Health Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class ManaUpPool(Range): - """ - Determines the number of Mana Ups in the item pool. - """ - display_name = "Mana Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class AttackUpPool(Range): - """ - Determines the number of Attack Ups in the item pool. - """ - display_name = "Attack Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class MagicDamageUpPool(Range): - """ - Determines the number of Magic Damage Ups in the item pool. - """ - display_name = "Magic Damage Up Pool" - range_start = 0 - range_end = 15 - default = 15 - - -class ArmorUpPool(Range): - """ - Determines the number of Armor Ups in the item pool. - """ - display_name = "Armor Up Pool" - range_start = 0 - range_end = 10 - default = 10 - - -class EquipUpPool(Range): - """ - Determines the number of Equip Ups in the item pool. - """ - display_name = "Equip Up Pool" - range_start = 0 - range_end = 10 - default = 10 - - -class CritChanceUpPool(Range): - """ - Determines the number of Crit Chance Ups in the item pool. - """ - display_name = "Crit Chance Up Pool" - range_start = 0 - range_end = 5 - default = 5 - - -class CritDamageUpPool(Range): - """ - Determines the number of Crit Damage Ups in the item pool. - """ - display_name = "Crit Damage Up Pool" - range_start = 0 - range_end = 5 - default = 5 - - -class FreeDiaryOnGeneration(DefaultOnToggle): - """ - Allows the player to get a free diary check every time they regenerate the castle in the starting room. - """ - display_name = "Free Diary On Generation" - - -class AvailableClasses(OptionSet): - """ - List of classes that will be in the item pool to find. The upgraded form of the class will be added with it. - The upgraded form of your starting class will be available regardless. - """ - display_name = "Available Classes" - default = frozenset( - {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"} - ) - valid_keys = {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"} - - -@dataclass -class RLOptions(PerGameCommonOptions): - starting_gender: StartingGender - starting_class: StartingClass - available_classes: AvailableClasses - new_game_plus: NewGamePlus - fairy_chests_per_zone: FairyChestsPerZone - chests_per_zone: ChestsPerZone - universal_fairy_chests: UniversalFairyChests - universal_chests: UniversalChests - vendors: Vendors - architect: Architect - architect_fee: ArchitectFee - disable_charon: DisableCharon - require_purchasing: RequirePurchasing - progressive_blueprints: ProgressiveBlueprints - gold_gain_multiplier: GoldGainMultiplier - number_of_children: NumberOfChildren - free_diary_on_generation: FreeDiaryOnGeneration - khidr: ChallengeBossKhidr - alexander: ChallengeBossAlexander - leon: ChallengeBossLeon - herodotus: ChallengeBossHerodotus - health_pool: HealthUpPool - mana_pool: ManaUpPool - attack_pool: AttackUpPool - magic_damage_pool: MagicDamageUpPool - armor_pool: ArmorUpPool - equip_pool: EquipUpPool - crit_chance_pool: CritChanceUpPool - crit_damage_pool: CritDamageUpPool - allow_default_names: AllowDefaultNames - additional_lady_names: AdditionalLadyNames - additional_sir_names: AdditionalSirNames - death_link: DeathLink diff --git a/worlds/rogue_legacy/Presets.py b/worlds/rogue_legacy/Presets.py deleted file mode 100644 index 2dfeee64d8ca..000000000000 --- a/worlds/rogue_legacy/Presets.py +++ /dev/null @@ -1,61 +0,0 @@ -from typing import Any, Dict - -from .Options import Architect, GoldGainMultiplier, Vendors - -rl_options_presets: Dict[str, Dict[str, Any]] = { - # Example preset using only literal values. - "Unknown Fate": { - "progression_balancing": "random", - "accessibility": "random", - "starting_gender": "random", - "starting_class": "random", - "new_game_plus": "random", - "fairy_chests_per_zone": "random", - "chests_per_zone": "random", - "universal_fairy_chests": "random", - "universal_chests": "random", - "vendors": "random", - "architect": "random", - "architect_fee": "random", - "disable_charon": "random", - "require_purchasing": "random", - "progressive_blueprints": "random", - "gold_gain_multiplier": "random", - "number_of_children": "random", - "free_diary_on_generation": "random", - "khidr": "random", - "alexander": "random", - "leon": "random", - "herodotus": "random", - "health_pool": "random", - "mana_pool": "random", - "attack_pool": "random", - "magic_damage_pool": "random", - "armor_pool": "random", - "equip_pool": "random", - "crit_chance_pool": "random", - "crit_damage_pool": "random", - "allow_default_names": True, - "death_link": "random", - }, - # A preset I actually use, using some literal values and some from the option itself. - "Limited Potential": { - "progression_balancing": "disabled", - "fairy_chests_per_zone": 2, - "starting_class": "random", - "chests_per_zone": 30, - "vendors": Vendors.option_normal, - "architect": Architect.option_disabled, - "gold_gain_multiplier": GoldGainMultiplier.option_half, - "number_of_children": 2, - "free_diary_on_generation": False, - "health_pool": 10, - "mana_pool": 10, - "attack_pool": 10, - "magic_damage_pool": 10, - "armor_pool": 5, - "equip_pool": 10, - "crit_chance_pool": 5, - "crit_damage_pool": 5, - } -} diff --git a/worlds/rogue_legacy/Regions.py b/worlds/rogue_legacy/Regions.py deleted file mode 100644 index 61b0ef73ec78..000000000000 --- a/worlds/rogue_legacy/Regions.py +++ /dev/null @@ -1,114 +0,0 @@ -from typing import Dict, List, NamedTuple, Optional, TYPE_CHECKING - -from BaseClasses import MultiWorld, Region, Entrance -from .Locations import RLLocation, location_table, get_locations_by_category - -if TYPE_CHECKING: - from . import RLWorld - - -class RLRegionData(NamedTuple): - locations: Optional[List[str]] - region_exits: Optional[List[str]] - - -def create_regions(world: "RLWorld"): - regions: Dict[str, RLRegionData] = { - "Menu": RLRegionData(None, ["Castle Hamson"]), - "The Manor": RLRegionData([], []), - "Castle Hamson": RLRegionData([], ["Forest Abkhazia", "The Maya", "Land of Darkness", - "The Fountain Room", "The Manor"]), - "Forest Abkhazia": RLRegionData([], []), - "The Maya": RLRegionData([], []), - "Land of Darkness": RLRegionData([], []), - "The Fountain Room": RLRegionData([], None), - } - - # Artificially stagger diary spheres for progression. - for diary in range(0, 25): - region: str - if 0 <= diary < 6: - region = "Castle Hamson" - elif 6 <= diary < 12: - region = "Forest Abkhazia" - elif 12 <= diary < 18: - region = "The Maya" - elif 18 <= diary < 24: - region = "Land of Darkness" - else: - region = "The Fountain Room" - regions[region].locations.append(f"Diary {diary + 1}") - - # Manor & Special - for manor in get_locations_by_category("Manor").keys(): - regions["The Manor"].locations.append(manor) - for special in get_locations_by_category("Special").keys(): - regions["Castle Hamson"].locations.append(special) - - # Boss Rewards - regions["Castle Hamson"].locations.append("Castle Hamson Boss Reward") - regions["Forest Abkhazia"].locations.append("Forest Abkhazia Boss Reward") - regions["The Maya"].locations.append("The Maya Boss Reward") - regions["Land of Darkness"].locations.append("Land of Darkness Boss Reward") - - # Events - regions["Castle Hamson"].locations.append("Castle Hamson Boss Room") - regions["Forest Abkhazia"].locations.append("Forest Abkhazia Boss Room") - regions["The Maya"].locations.append("The Maya Boss Room") - regions["Land of Darkness"].locations.append("Land of Darkness Boss Room") - regions["The Fountain Room"].locations.append("Fountain Room") - - # Chests - chests = int(world.options.chests_per_zone) - for i in range(0, chests): - if world.options.universal_chests: - regions["Castle Hamson"].locations.append(f"Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Chest {i + 1 + chests}") - regions["The Maya"].locations.append(f"Chest {i + 1 + (chests * 2)}") - regions["Land of Darkness"].locations.append(f"Chest {i + 1 + (chests * 3)}") - else: - regions["Castle Hamson"].locations.append(f"Castle Hamson - Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Forest Abkhazia - Chest {i + 1}") - regions["The Maya"].locations.append(f"The Maya - Chest {i + 1}") - regions["Land of Darkness"].locations.append(f"Land of Darkness - Chest {i + 1}") - - # Fairy Chests - chests = int(world.options.fairy_chests_per_zone) - for i in range(0, chests): - if world.options.universal_fairy_chests: - regions["Castle Hamson"].locations.append(f"Fairy Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Fairy Chest {i + 1 + chests}") - regions["The Maya"].locations.append(f"Fairy Chest {i + 1 + (chests * 2)}") - regions["Land of Darkness"].locations.append(f"Fairy Chest {i + 1 + (chests * 3)}") - else: - regions["Castle Hamson"].locations.append(f"Castle Hamson - Fairy Chest {i + 1}") - regions["Forest Abkhazia"].locations.append(f"Forest Abkhazia - Fairy Chest {i + 1}") - regions["The Maya"].locations.append(f"The Maya - Fairy Chest {i + 1}") - regions["Land of Darkness"].locations.append(f"Land of Darkness - Fairy Chest {i + 1}") - - # Set up the regions correctly. - for name, data in regions.items(): - world.multiworld.regions.append(create_region(world.multiworld, world.player, name, data)) - - world.get_entrance("Castle Hamson").connect(world.get_region("Castle Hamson")) - world.get_entrance("The Manor").connect(world.get_region("The Manor")) - world.get_entrance("Forest Abkhazia").connect(world.get_region("Forest Abkhazia")) - world.get_entrance("The Maya").connect(world.get_region("The Maya")) - world.get_entrance("Land of Darkness").connect(world.get_region("Land of Darkness")) - world.get_entrance("The Fountain Room").connect(world.get_region("The Fountain Room")) - - -def create_region(multiworld: MultiWorld, player: int, name: str, data: RLRegionData): - region = Region(name, player, multiworld) - if data.locations: - for loc_name in data.locations: - loc_data = location_table.get(loc_name) - location = RLLocation(player, loc_name, loc_data.code if loc_data else None, region) - region.locations.append(location) - - if data.region_exits: - for exit in data.region_exits: - entrance = Entrance(player, exit, region) - region.exits.append(entrance) - - return region diff --git a/worlds/rogue_legacy/Rules.py b/worlds/rogue_legacy/Rules.py deleted file mode 100644 index 505bbdd63541..000000000000 --- a/worlds/rogue_legacy/Rules.py +++ /dev/null @@ -1,117 +0,0 @@ -from BaseClasses import CollectionState -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from . import RLWorld - - -def get_upgrade_total(world: "RLWorld") -> int: - return int(world.options.health_pool) + int(world.options.mana_pool) + \ - int(world.options.attack_pool) + int(world.options.magic_damage_pool) - - -def get_upgrade_count(state: CollectionState, player: int) -> int: - return state.count("Health Up", player) + state.count("Mana Up", player) + \ - state.count("Attack Up", player) + state.count("Magic Damage Up", player) - - -def has_vendors(state: CollectionState, player: int) -> bool: - return state.has_all({"Blacksmith", "Enchantress"}, player) - - -def has_upgrade_amount(state: CollectionState, player: int, amount: int) -> bool: - return get_upgrade_count(state, player) >= amount - - -def has_upgrades_percentage(state: CollectionState, world: "RLWorld", percentage: float) -> bool: - return has_upgrade_amount(state, world.player, round(get_upgrade_total(world) * (percentage / 100))) - - -def has_movement_rune(state: CollectionState, player: int) -> bool: - return state.has("Vault Runes", player) or state.has("Sprint Runes", player) or state.has("Sky Runes", player) - - -def has_fairy_progression(state: CollectionState, player: int) -> bool: - return state.has("Dragons", player) or (state.has("Enchantress", player) and has_movement_rune(state, player)) - - -def has_defeated_castle(state: CollectionState, player: int) -> bool: - return state.has("Defeat Khidr", player) or state.has("Defeat Neo Khidr", player) - - -def has_defeated_forest(state: CollectionState, player: int) -> bool: - return state.has("Defeat Alexander", player) or state.has("Defeat Alexander IV", player) - - -def has_defeated_tower(state: CollectionState, player: int) -> bool: - return state.has("Defeat Ponce de Leon", player) or state.has("Defeat Ponce de Freon", player) - - -def has_defeated_dungeon(state: CollectionState, player: int) -> bool: - return state.has("Defeat Herodotus", player) or state.has("Defeat Astrodotus", player) - - -def set_rules(world: "RLWorld", player: int): - # If 'vendors' are 'normal', then expect it to show up in the first half(ish) of the spheres. - if world.options.vendors == "normal": - world.get_location("Forest Abkhazia Boss Reward").access_rule = \ - lambda state: has_vendors(state, player) - - # Gate each manor location so everything isn't dumped into sphere 1. - manor_rules = { - "Defeat Khidr" if world.options.khidr == "vanilla" else "Defeat Neo Khidr": [ - "Manor - Left Wing Window", - "Manor - Left Wing Rooftop", - "Manor - Right Wing Window", - "Manor - Right Wing Rooftop", - "Manor - Left Big Base", - "Manor - Right Big Base", - "Manor - Left Tree 1", - "Manor - Left Tree 2", - "Manor - Right Tree", - ], - "Defeat Alexander" if world.options.alexander == "vanilla" else "Defeat Alexander IV": [ - "Manor - Left Big Upper 1", - "Manor - Left Big Upper 2", - "Manor - Left Big Windows", - "Manor - Left Big Rooftop", - "Manor - Left Far Base", - "Manor - Left Far Roof", - "Manor - Left Extension", - "Manor - Right Big Upper", - "Manor - Right Big Rooftop", - "Manor - Right Extension", - ], - "Defeat Ponce de Leon" if world.options.leon == "vanilla" else "Defeat Ponce de Freon": [ - "Manor - Right High Base", - "Manor - Right High Upper", - "Manor - Right High Tower", - "Manor - Observatory Base", - "Manor - Observatory Telescope", - ] - } - - # Set rules for manor locations. - for event, locations in manor_rules.items(): - for location in locations: - world.get_location(location).access_rule = lambda state: state.has(event, player) - - # Set rules for fairy chests to decrease headache of expectation to find non-movement fairy chests. - for fairy_location in [location for location in world.multiworld.get_locations(player) if "Fairy" in location.name]: - fairy_location.access_rule = lambda state: has_fairy_progression(state, player) - - # Region rules. - world.get_entrance("Forest Abkhazia").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 12.5) and has_defeated_castle(state, player) - - world.get_entrance("The Maya").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 25) and has_defeated_forest(state, player) - - world.get_entrance("Land of Darkness").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 37.5) and has_defeated_tower(state, player) - - world.get_entrance("The Fountain Room").access_rule = \ - lambda state: has_upgrades_percentage(state, world, 50) and has_defeated_dungeon(state, player) - - # Win condition. - world.multiworld.completion_condition[player] = lambda state: state.has("Defeat The Fountain", player) diff --git a/worlds/rogue_legacy/__init__.py b/worlds/rogue_legacy/__init__.py deleted file mode 100644 index 7ffdd459db48..000000000000 --- a/worlds/rogue_legacy/__init__.py +++ /dev/null @@ -1,243 +0,0 @@ -from typing import List - -from BaseClasses import Tutorial -from worlds.AutoWorld import WebWorld, World -from .Items import RLItem, RLItemData, event_item_table, get_items_by_category, item_table -from .Locations import RLLocation, location_table -from .Options import RLOptions -from .Presets import rl_options_presets -from .Regions import create_regions -from .Rules import set_rules - - -class RLWeb(WebWorld): - theme = "stone" - tutorials = [Tutorial( - "Multiworld Setup Guide", - "A guide to setting up the Rogue Legacy Randomizer software on your computer. This guide covers single-player, " - "multiworld, and related software.", - "English", - "rogue-legacy_en.md", - "rogue-legacy/en", - ["Phar"] - )] - bug_report_page = "https://github.com/ThePhar/RogueLegacyRandomizer/issues/new?assignees=&labels=bug&template=" \ - "report-an-issue---.md&title=%5BIssue%5D" - options_presets = rl_options_presets - - -class RLWorld(World): - """ - Rogue Legacy is a genealogical rogue-"LITE" where anyone can be a hero. Each time you die, your child will succeed - you. Every child is unique. One child might be colorblind, another might have vertigo-- they could even be a dwarf. - But that's OK, because no one is perfect, and you don't have to be to succeed. - """ - game = "Rogue Legacy" - options_dataclass = RLOptions - options: RLOptions - topology_present = True - required_client_version = (0, 3, 5) - web = RLWeb() - - item_name_to_id = {name: data.code for name, data in item_table.items() if data.code is not None} - location_name_to_id = {name: data.code for name, data in location_table.items() if data.code is not None} - - def fill_slot_data(self) -> dict: - return self.options.as_dict(*[name for name in self.options_dataclass.type_hints.keys()]) - - def generate_early(self): - # Check validation of names. - additional_lady_names = len(self.options.additional_lady_names.value) - additional_sir_names = len(self.options.additional_sir_names.value) - if not self.options.allow_default_names: - if additional_lady_names < int(self.options.number_of_children): - raise Exception( - f"allow_default_names is off, but not enough names are defined in additional_lady_names. " - f"Expected {int(self.options.number_of_children)}, Got {additional_lady_names}") - - if additional_sir_names < int(self.options.number_of_children): - raise Exception( - f"allow_default_names is off, but not enough names are defined in additional_sir_names. " - f"Expected {int(self.options.number_of_children)}, Got {additional_sir_names}") - - def create_items(self): - item_pool: List[RLItem] = [] - total_locations = len(self.multiworld.get_unfilled_locations(self.player)) - for name, data in item_table.items(): - quantity = data.max_quantity - - # Architect - if name == "Architect": - if self.options.architect == "disabled": - continue - if self.options.architect == "start_unlocked": - self.multiworld.push_precollected(self.create_item(name)) - continue - if self.options.architect == "early": - self.multiworld.local_early_items[self.player]["Architect"] = 1 - - # Blacksmith and Enchantress - if name == "Blacksmith" or name == "Enchantress": - if self.options.vendors == "start_unlocked": - self.multiworld.push_precollected(self.create_item(name)) - continue - if self.options.vendors == "early": - self.multiworld.local_early_items[self.player]["Blacksmith"] = 1 - self.multiworld.local_early_items[self.player]["Enchantress"] = 1 - - # Haggling - if name == "Haggling" and self.options.disable_charon: - continue - - # Blueprints - if data.category == "Blueprints": - # No progressive blueprints if progressive_blueprints are disabled. - if name == "Progressive Blueprints" and not self.options.progressive_blueprints: - continue - # No distinct blueprints if progressive_blueprints are enabled. - elif name != "Progressive Blueprints" and self.options.progressive_blueprints: - continue - - # Classes - if data.category == "Classes": - if name == "Progressive Knights": - if "Knight" not in self.options.available_classes: - continue - - if self.options.starting_class == "knight": - quantity = 1 - if name == "Progressive Mages": - if "Mage" not in self.options.available_classes: - continue - - if self.options.starting_class == "mage": - quantity = 1 - if name == "Progressive Barbarians": - if "Barbarian" not in self.options.available_classes: - continue - - if self.options.starting_class == "barbarian": - quantity = 1 - if name == "Progressive Knaves": - if "Knave" not in self.options.available_classes: - continue - - if self.options.starting_class == "knave": - quantity = 1 - if name == "Progressive Miners": - if "Miner" not in self.options.available_classes: - continue - - if self.options.starting_class == "miner": - quantity = 1 - if name == "Progressive Shinobis": - if "Shinobi" not in self.options.available_classes: - continue - - if self.options.starting_class == "shinobi": - quantity = 1 - if name == "Progressive Liches": - if "Lich" not in self.options.available_classes: - continue - - if self.options.starting_class == "lich": - quantity = 1 - if name == "Progressive Spellthieves": - if "Spellthief" not in self.options.available_classes: - continue - - if self.options.starting_class == "spellthief": - quantity = 1 - if name == "Dragons": - if "Dragon" not in self.options.available_classes: - continue - if name == "Traitors": - if "Traitor" not in self.options.available_classes: - continue - - # Skills - if name == "Health Up": - quantity = self.options.health_pool.value - elif name == "Mana Up": - quantity = self.options.mana_pool.value - elif name == "Attack Up": - quantity = self.options.attack_pool.value - elif name == "Magic Damage Up": - quantity = self.options.magic_damage_pool.value - elif name == "Armor Up": - quantity = self.options.armor_pool.value - elif name == "Equip Up": - quantity = self.options.equip_pool.value - elif name == "Crit Chance Up": - quantity = self.options.crit_chance_pool.value - elif name == "Crit Damage Up": - quantity = self.options.crit_damage_pool.value - - # Ignore filler, it will be added in a later stage. - if data.category == "Filler": - continue - - item_pool += [self.create_item(name) for _ in range(0, quantity)] - - # Fill any empty locations with filler items. - while len(item_pool) < total_locations: - item_pool.append(self.create_item(self.get_filler_item_name())) - - self.multiworld.itempool += item_pool - - def get_filler_item_name(self) -> str: - fillers = get_items_by_category("Filler") - weights = [data.weight for data in fillers.values()] - return self.random.choices([filler for filler in fillers.keys()], weights, k=1)[0] - - def create_item(self, name: str) -> RLItem: - data = item_table[name] - return RLItem(name, data.classification, data.code, self.player) - - def create_event(self, name: str) -> RLItem: - data = event_item_table[name] - return RLItem(name, data.classification, data.code, self.player) - - def set_rules(self): - set_rules(self, self.player) - - def create_regions(self): - create_regions(self) - self._place_events() - - def _place_events(self): - # Fountain - self.multiworld.get_location("Fountain Room", self.player).place_locked_item( - self.create_event("Defeat The Fountain")) - - # Khidr / Neo Khidr - if self.options.khidr == "vanilla": - self.multiworld.get_location("Castle Hamson Boss Room", self.player).place_locked_item( - self.create_event("Defeat Khidr")) - else: - self.multiworld.get_location("Castle Hamson Boss Room", self.player).place_locked_item( - self.create_event("Defeat Neo Khidr")) - - # Alexander / Alexander IV - if self.options.alexander == "vanilla": - self.multiworld.get_location("Forest Abkhazia Boss Room", self.player).place_locked_item( - self.create_event("Defeat Alexander")) - else: - self.multiworld.get_location("Forest Abkhazia Boss Room", self.player).place_locked_item( - self.create_event("Defeat Alexander IV")) - - # Ponce de Leon / Ponce de Freon - if self.options.leon == "vanilla": - self.multiworld.get_location("The Maya Boss Room", self.player).place_locked_item( - self.create_event("Defeat Ponce de Leon")) - else: - self.multiworld.get_location("The Maya Boss Room", self.player).place_locked_item( - self.create_event("Defeat Ponce de Freon")) - - # Herodotus / Astrodotus - if self.options.herodotus == "vanilla": - self.multiworld.get_location("Land of Darkness Boss Room", self.player).place_locked_item( - self.create_event("Defeat Herodotus")) - else: - self.multiworld.get_location("Land of Darkness Boss Room", self.player).place_locked_item( - self.create_event("Defeat Astrodotus")) diff --git a/worlds/rogue_legacy/docs/en_Rogue Legacy.md b/worlds/rogue_legacy/docs/en_Rogue Legacy.md deleted file mode 100644 index dd203c73ac26..000000000000 --- a/worlds/rogue_legacy/docs/en_Rogue Legacy.md +++ /dev/null @@ -1,34 +0,0 @@ -# Rogue Legacy (PC) - -## Where is the options page? - -The [player options page for this game](../player-options) contains most of the options you need to -configure and export a config file. Some options can only be made in YAML, but an explanation can be found in the -[template yaml here](../../../static/generated/configs/Rogue%20Legacy.yaml). - -## What does randomization do to this game? - -Rogue Legacy Randomizer takes all the classes, skills, runes, and blueprints and spreads them out into chests, the manor -upgrade screen, bosses, and some special individual locations. The goal is to become powerful enough to defeat the four -zone bosses and then defeat The Fountain. - -## What items and locations get shuffled? -All the skill upgrades, class upgrades, runes packs, and equipment packs are shuffled in the manor upgrade screen, diary -checks, chests and fairy chests, and boss rewards. Skill upgrades are also grouped in packs of 5 to make the finding of -stats less of a chore. Runes and Equipment are also grouped together. - -Some additional locations that can contain items are the Jukebox, the Portraits, and the mini-game rewards. - -## Which items can be in another player's world? - -Any of the items which can be shuffled may also be placed into another player's world. It is possible to choose to limit -certain items to your own world. -## When the player receives an item, what happens? - -When the player receives an item, your character will hold the item above their head and display it to the world. It's -good for business! - -## What do I do if I encounter a bug with the game? - -Please reach out to Phar#4444 on Discord or you can drop a bug report on the -[GitHub page for Rogue Legacy Randomizer](https://github.com/ThePhar/RogueLegacyRandomizer/issues/new?assignees=&labels=bug&template=report-an-issue---.md&title=%5BIssue%5D). diff --git a/worlds/rogue_legacy/docs/rogue-legacy_en.md b/worlds/rogue_legacy/docs/rogue-legacy_en.md deleted file mode 100644 index fc9f6920178d..000000000000 --- a/worlds/rogue_legacy/docs/rogue-legacy_en.md +++ /dev/null @@ -1,35 +0,0 @@ -# Rogue Legacy Randomizer Setup Guide - -## Required Software - -- Rogue Legacy Randomizer from the - [Rogue Legacy Randomizer Releases Page](https://github.com/ThePhar/RogueLegacyRandomizer/releases) - -## Recommended Installation Instructions - -Please read the README file on the -[Rogue Legacy Randomizer GitHub](https://github.com/ThePhar/RogueLegacyRandomizer/blob/master/README.md) page for -up-to-date installation instructions. - -## Configuring your YAML file - -### What is a YAML file and why do I need one? - -Your YAML file contains a set of configuration options which provide the generator with information about how it should -generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy -an experience customized for their taste, and different players in the same multiworld can all have different options. - -### Where do I get a YAML file? - -you can customize your options by visiting the [Rogue Legacy Options Page](/games/Rogue%20Legacy/player-options). - -### Connect to the MultiServer - -Once in game, press the start button and the AP connection screen should appear. You will fill out the hostname, port, -slot name, and password (if applicable). You should only need to fill out hostname, port, and password if the server -provides an alternative one to the default values. - -### Play the game - -Once you have entered the required values, you go to Connect and then select Confirm on the "Ready to Start" screen. Now -you're off to start your legacy! diff --git a/worlds/rogue_legacy/test/TestUnique.py b/worlds/rogue_legacy/test/TestUnique.py deleted file mode 100644 index 1ae9968d5519..000000000000 --- a/worlds/rogue_legacy/test/TestUnique.py +++ /dev/null @@ -1,23 +0,0 @@ -from typing import Dict - -from . import RLTestBase -from ..Items import item_table -from ..Locations import location_table - - -class UniqueTest(RLTestBase): - @staticmethod - def test_item_ids_are_all_unique(): - item_ids: Dict[int, str] = {} - for name, data in item_table.items(): - assert data.code not in item_ids.keys(), f"'{name}': {data.code}, is not unique. " \ - f"'{item_ids[data.code]}' also has this identifier." - item_ids[data.code] = name - - @staticmethod - def test_location_ids_are_all_unique(): - location_ids: Dict[int, str] = {} - for name, data in location_table.items(): - assert data.code not in location_ids.keys(), f"'{name}': {data.code}, is not unique. " \ - f"'{location_ids[data.code]}' also has this identifier." - location_ids[data.code] = name diff --git a/worlds/rogue_legacy/test/__init__.py b/worlds/rogue_legacy/test/__init__.py deleted file mode 100644 index 3346476ba644..000000000000 --- a/worlds/rogue_legacy/test/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from test.bases import WorldTestBase - - -class RLTestBase(WorldTestBase): - game = "Rogue Legacy" diff --git a/worlds/sa2b/GateBosses.py b/worlds/sa2b/GateBosses.py index 9e1a81bae94b..02e089359bfe 100644 --- a/worlds/sa2b/GateBosses.py +++ b/worlds/sa2b/GateBosses.py @@ -1,6 +1,7 @@ import typing from BaseClasses import MultiWorld +from Options import OptionError from worlds.AutoWorld import World from .Names import LocationName @@ -99,8 +100,9 @@ def get_gate_bosses(world: World): pass if boss in plando_bosses: - # TODO: Raise error here. Duplicates not allowed - pass + raise OptionError(f"Invalid input for option `plando_bosses`: " + f"No Duplicate Bosses permitted ({boss}) - for " + f"{world.player_name}") plando_bosses[boss_num] = boss @@ -108,13 +110,14 @@ def get_gate_bosses(world: World): available_bosses.remove(boss) for x in range(world.options.number_of_level_gates): - if ("king boom boo" not in selected_bosses) and ("king boom boo" not in available_bosses) and ((x + 1) / world.options.number_of_level_gates) > 0.5: - available_bosses.extend(gate_bosses_with_requirements_table) + if (10 not in selected_bosses) and (king_boom_boo not in available_bosses) and ((x + 1) / world.options.number_of_level_gates) > 0.5: + available_bosses.extend(gate_bosses_with_requirements_table.keys()) world.random.shuffle(available_bosses) chosen_boss = available_bosses[0] if plando_bosses[x] != "None": - available_bosses.append(plando_bosses[x]) + if plando_bosses[x] not in available_bosses: + available_bosses.append(plando_bosses[x]) chosen_boss = plando_bosses[x] selected_bosses.append(all_gate_bosses_table[chosen_boss]) diff --git a/worlds/sa2b/Missions.py b/worlds/sa2b/Missions.py index 0c43834fb114..a5aac267a27a 100644 --- a/worlds/sa2b/Missions.py +++ b/worlds/sa2b/Missions.py @@ -241,7 +241,7 @@ def get_mission_count_table(multiworld: MultiWorld, world: World, player: int): sonic_active_missions = min(sonic_active_missions, world.options.sonic_mission_count.value) tails_active_missions = min(tails_active_missions, world.options.tails_mission_count.value) knuckles_active_missions = min(knuckles_active_missions, world.options.knuckles_mission_count.value) - shadow_active_missions = min(shadow_active_missions, world.options.sonic_mission_count.value) + shadow_active_missions = min(shadow_active_missions, world.options.shadow_mission_count.value) eggman_active_missions = min(eggman_active_missions, world.options.eggman_mission_count.value) rouge_active_missions = min(rouge_active_missions, world.options.rouge_mission_count.value) kart_active_missions = min(kart_active_missions, world.options.kart_mission_count.value) diff --git a/worlds/sa2b/Rules.py b/worlds/sa2b/Rules.py index 53edc686b638..a7ea9becb1cf 100644 --- a/worlds/sa2b/Rules.py +++ b/worlds/sa2b/Rules.py @@ -324,7 +324,8 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla add_rule_safe(multiworld, LocationName.iron_gate_5, player, lambda state: state.has(ItemName.eggman_large_cannon, player)) add_rule_safe(multiworld, LocationName.dry_lagoon_5, player, - lambda state: state.has(ItemName.rouge_treasure_scope, player)) + lambda state: state.has(ItemName.rouge_pick_nails, player) and + state.has(ItemName.rouge_treasure_scope, player)) add_rule_safe(multiworld, LocationName.sand_ocean_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule_safe(multiworld, LocationName.egg_quarters_5, player, @@ -407,8 +408,7 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla lambda state: state.has(ItemName.sonic_bounce_bracelet, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.tails_booster, player) and @@ -1402,8 +1402,6 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla state.has(ItemName.eggman_large_cannon, player))) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: (state.has(ItemName.rouge_mystic_melody, player) and state.has(ItemName.rouge_treasure_scope, player))) @@ -1724,6 +1722,9 @@ def set_mission_upgrade_rules_standard(multiworld: MultiWorld, world: World, pla lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.white_jungle_itembox_8, player), lambda state: state.has(ItemName.shadow_air_shoes, player)) + add_rule(multiworld.get_location(LocationName.sky_rail_itembox_8, player), + lambda state: (state.has(ItemName.shadow_air_shoes, player) and + state.has(ItemName.shadow_mystic_melody, player))) add_rule(multiworld.get_location(LocationName.mad_space_itembox_8, player), lambda state: state.has(ItemName.rouge_iron_boots, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_itembox_8, player), @@ -2257,7 +2258,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: add_rule_safe(multiworld, LocationName.weapons_bed_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule_safe(multiworld, LocationName.security_hall_5, player, - lambda state: state.has(ItemName.rouge_treasure_scope, player)) + lambda state: state.has(ItemName.rouge_pick_nails, player)) add_rule_safe(multiworld, LocationName.cosmic_wall_5, player, lambda state: state.has(ItemName.eggman_jet_engine, player)) @@ -2308,8 +2309,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: lambda state: state.has(ItemName.tails_booster, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.tails_booster, player) and @@ -2971,7 +2971,7 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: add_rule(multiworld.get_location(LocationName.mission_street_lifebox_2, player), lambda state: (state.has(ItemName.tails_booster, player) and -- state.has(ItemName.tails_mystic_melody, player))) + state.has(ItemName.tails_mystic_melody, player))) add_rule(multiworld.get_location(LocationName.eternal_engine_lifebox_2, player), lambda state: state.has(ItemName.tails_booster, player)) @@ -2980,8 +2980,6 @@ def set_mission_upgrade_rules_hard(multiworld: MultiWorld, world: World, player: state.has(ItemName.eggman_jet_engine, player))) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: (state.has(ItemName.rouge_mystic_melody, player) and state.has(ItemName.rouge_treasure_scope, player))) @@ -3593,8 +3591,7 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe lambda state: state.has(ItemName.tails_booster, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_chao_1, player), - lambda state: state.has(ItemName.eggman_mystic_melody, player) and - state.has(ItemName.eggman_jet_engine, player)) + lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.cannon_core_chao_1, player), lambda state: state.has(ItemName.eggman_jet_engine, player) and @@ -3643,9 +3640,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.cosmic_wall_pipe_2, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) - add_rule(multiworld.get_location(LocationName.cannon_core_pipe_2, player), - lambda state: state.has(ItemName.tails_booster, player)) - add_rule(multiworld.get_location(LocationName.prison_lane_pipe_3, player), lambda state: state.has(ItemName.tails_bazooka, player)) add_rule(multiworld.get_location(LocationName.mission_street_pipe_3, player), @@ -3771,10 +3765,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.cosmic_wall_beetle, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) - add_rule(multiworld.get_location(LocationName.cannon_core_beetle, player), - lambda state: state.has(ItemName.tails_booster, player) and - state.has(ItemName.knuckles_hammer_gloves, player)) - # Animal Upgrade Requirements if world.options.animalsanity: add_rule(multiworld.get_location(LocationName.hidden_base_animal_2, player), @@ -3839,8 +3829,7 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe add_rule(multiworld.get_location(LocationName.weapons_bed_animal_8, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.security_hall_animal_8, player), - lambda state: state.has(ItemName.rouge_pick_nails, player) and - state.has(ItemName.rouge_iron_boots, player)) + lambda state: state.has(ItemName.rouge_iron_boots, player)) add_rule(multiworld.get_location(LocationName.cosmic_wall_animal_8, player), lambda state: state.has(ItemName.eggman_jet_engine, player)) @@ -3976,8 +3965,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe state.has(ItemName.tails_bazooka, player)) add_rule(multiworld.get_location(LocationName.crazy_gadget_animal_16, player), lambda state: state.has(ItemName.sonic_flame_ring, player)) - add_rule(multiworld.get_location(LocationName.final_rush_animal_16, player), - lambda state: state.has(ItemName.sonic_bounce_bracelet, player)) add_rule(multiworld.get_location(LocationName.final_chase_animal_17, player), lambda state: state.has(ItemName.shadow_flame_ring, player)) @@ -4035,8 +4022,6 @@ def set_mission_upgrade_rules_expert(multiworld: MultiWorld, world: World, playe lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.dry_lagoon_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) - add_rule(multiworld.get_location(LocationName.sand_ocean_lifebox_2, player), - lambda state: state.has(ItemName.eggman_jet_engine, player)) add_rule(multiworld.get_location(LocationName.egg_quarters_lifebox_2, player), lambda state: state.has(ItemName.rouge_treasure_scope, player)) diff --git a/worlds/saving_princess/__init__.py b/worlds/saving_princess/__init__.py index 4109f356fd2e..f731012abc8e 100644 --- a/worlds/saving_princess/__init__.py +++ b/worlds/saving_princess/__init__.py @@ -12,7 +12,7 @@ def launch_client(*args: str): from .Client import launch - launch_subprocess(launch(*args), name=CLIENT_NAME) + launch_subprocess(launch, name=CLIENT_NAME, args=args) components.append( diff --git a/worlds/sc2/Locations.py b/worlds/sc2/Locations.py index b9c30bb70106..42b1dd4d4eb0 100644 --- a/worlds/sc2/Locations.py +++ b/worlds/sc2/Locations.py @@ -66,11 +66,8 @@ def get_plando_locations(world: World) -> List[str]: if world is None: return [] plando_locations = [] - for plando_setting in world.multiworld.plando_items[world.player]: - plando_locations += plando_setting.get("locations", []) - plando_setting_location = plando_setting.get("location", None) - if plando_setting_location is not None: - plando_locations.append(plando_setting_location) + for plando_setting in world.options.plando_items: + plando_locations += plando_setting.locations return plando_locations diff --git a/worlds/shapez/__init__.py b/worlds/shapez/__init__.py new file mode 100644 index 000000000000..2a77ed8c9c96 --- /dev/null +++ b/worlds/shapez/__init__.py @@ -0,0 +1,417 @@ +import math +from typing import Any, List, Dict, Tuple, Mapping + +from Options import OptionError +from .data.strings import OTHER, ITEMS, CATEGORY, LOCATIONS, SLOTDATA, GOALS, OPTIONS +from .items import item_descriptions, item_table, ShapezItem, \ + buildings_routing, buildings_processing, buildings_other, \ + buildings_top_row, buildings_wires, gameplay_unlocks, upgrades, \ + big_upgrades, filler, trap, bundles, belt_and_extractor, standard_traps, random_draining_trap, split_draining_traps, \ + whacky_upgrade_traps +from .locations import ShapezLocation, addlevels, addupgrades, addachievements, location_description, \ + addshapesanity, addshapesanity_ut, shapesanity_simple, init_shapesanity_pool, achievement_locations, \ + level_locations, upgrade_locations, shapesanity_locations, categories +from .presets import options_presets +from .options import ShapezOptions +from worlds.AutoWorld import World, WebWorld +from BaseClasses import Item, Tutorial, LocationProgressType, MultiWorld +from .regions import create_shapez_regions, has_x_belt_multiplier +from ..generic.Rules import add_rule + + +class ShapezWeb(WebWorld): + options_presets = options_presets + rich_text_options_doc = True + theme = "stone" + game_info_languages = ['en', 'de'] + setup_en = Tutorial( + "Multiworld Setup Guide", + "A guide to playing shapez with Archipelago:", + "English", + "setup_en.md", + "setup/en", + ["BlastSlimey"] + ) + setup_de = Tutorial( + setup_en.tutorial_name, + setup_en.description, + "Deutsch", + "setup_de.md", + "setup/de", + ["BlastSlimey"] + ) + datapackage_settings_en = Tutorial( + "Changing datapackage settings", + "3000 locations are too many or not enough? Here's how you can change that:", + "English", + "datapackage_settings_en.md", + "datapackage_settings/en", + ["BlastSlimey"] + ) + datapackage_settings_de = Tutorial( + datapackage_settings_en.tutorial_name, + datapackage_settings_en.description, + "Deutsch", + "datapackage_settings_de.md", + "datapackage_settings/de", + ["BlastSlimey"] + ) + tutorials = [setup_en, setup_de, datapackage_settings_en, datapackage_settings_de] + item_descriptions = item_descriptions + location_descriptions = location_description + + +class ShapezWorld(World): + """ + shapez is an automation game about cutting, rotating, stacking, and painting shapes, that you extract from randomly + generated patches on an infinite canvas, without the need to manage your infinite resources or to pay for building + your factories. + """ + game = OTHER.game_name + options_dataclass = ShapezOptions + options: ShapezOptions + topology_present = True + web = ShapezWeb() + base_id = 20010707 + item_name_to_id = {name: id for id, name in enumerate(item_table.keys(), base_id)} + location_name_to_id = {name: id for id, name in enumerate(level_locations + upgrade_locations + + achievement_locations + shapesanity_locations, base_id)} + item_name_groups = { + "Main Buildings": {ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker}, + "Processing Buildings": {*buildings_processing}, + "Goal Buildings": {ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.rotator_ccw, ITEMS.color_mixer, + ITEMS.stacker, ITEMS.cutter_quad, ITEMS.painter_double, ITEMS.painter_quad, ITEMS.wires, + ITEMS.switch, ITEMS.const_signal}, + "Most Useful Buildings": {ITEMS.balancer, ITEMS.tunnel, ITEMS.tunnel_tier_ii, ITEMS.comp_merger, + ITEMS.comp_splitter, ITEMS.trash, ITEMS.extractor_chain}, + "Most Important Buildings": {*belt_and_extractor}, + "Top Row Buildings": {*buildings_top_row}, + "Wires Layer Buildings": {*buildings_wires}, + "Gameplay Mechanics": {ITEMS.blueprints, ITEMS.wires}, + "Upgrades": {*{ITEMS.upgrade(size, cat) + for size in {CATEGORY.big, CATEGORY.small, CATEGORY.gigantic, CATEGORY.rising} + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting}}, + *{ITEMS.trap_upgrade(cat, size) + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting} + for size in {"", CATEGORY.demonic}}, + *{ITEMS.upgrade(size, CATEGORY.random) + for size in {CATEGORY.big, CATEGORY.small}}}, + **{f"{cat} Upgrades": {*{ITEMS.upgrade(size, cat) + for size in {CATEGORY.big, CATEGORY.small, CATEGORY.gigantic, CATEGORY.rising}}, + *{ITEMS.trap_upgrade(cat, size) + for size in {"", CATEGORY.demonic}}} + for cat in {CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting}}, + "Bundles": {*bundles}, + "Traps": {*standard_traps, *random_draining_trap, *split_draining_traps, *whacky_upgrade_traps}, + } + location_name_groups = { + "Levels": {*level_locations}, + "Upgrades": {*upgrade_locations}, + "Achievements": {*achievement_locations}, + "Shapesanity": {*shapesanity_locations}, + **{f"{cat} Upgrades": {loc for loc in upgrade_locations if loc.startswith(cat)} for cat in categories}, + "Only Belt and Extractor": {LOCATIONS.level(1), LOCATIONS.level(1, 1), + LOCATIONS.my_eyes, LOCATIONS.its_a_mess, LOCATIONS.getting_into_it, + LOCATIONS.perfectionist, LOCATIONS.oops, LOCATIONS.i_need_trains, LOCATIONS.gps, + LOCATIONS.a_long_time, LOCATIONS.addicted, + LOCATIONS.shapesanity(1), LOCATIONS.shapesanity(2), LOCATIONS.shapesanity(3)}, + } + + def __init__(self, multiworld: MultiWorld, player: int): + super().__init__(multiworld, player) + + # Defining instance attributes for each shapez world + # These are set to default values that should fail unit tests if not replaced with correct values + self.location_count: int = 0 + self.level_logic: List[str] = [] + self.upgrade_logic: List[str] = [] + self.level_logic_type: str = "" + self.upgrade_logic_type: str = "" + self.random_logic_phase_length: List[int] = [] + self.category_random_logic_amounts: Dict[str, int] = {} + self.maxlevel: int = 0 + self.finaltier: int = 0 + self.included_locations: Dict[str, Tuple[str, LocationProgressType]] = {} + self.client_seed: int = 0 + self.shapesanity_names: List[str] = [] + self.upgrade_traps_allowed: bool = False + + # Universal Tracker support + self.ut_active: bool = False + self.passthrough: Dict[str, any] = {} + self.location_id_to_alias: Dict[int, str] = {} + + @classmethod + def stage_generate_early(cls, multiworld: MultiWorld) -> None: + # Import the 75800 entries long shapesanity pool only once and only if it's actually needed + if len(shapesanity_simple) == 0: + init_shapesanity_pool() + + def generate_early(self) -> None: + # Calculate all the important values used for generating a shapez world, with some of them being random + self.upgrade_traps_allowed: bool = (self.options.include_whacky_upgrades and + (not self.options.goal == GOALS.efficiency_iii) and + self.options.throughput_levels_ratio == 0) + + # Load values from UT if this is a regenerated world + if hasattr(self.multiworld, "re_gen_passthrough"): + if OTHER.game_name in self.multiworld.re_gen_passthrough: + self.ut_active = True + self.passthrough = self.multiworld.re_gen_passthrough[OTHER.game_name] + self.maxlevel = self.passthrough[SLOTDATA.maxlevel] + self.finaltier = self.passthrough[SLOTDATA.finaltier] + self.client_seed = self.passthrough[SLOTDATA.seed] + self.level_logic = [self.passthrough[SLOTDATA.level_building(i+1)] for i in range(5)] + self.upgrade_logic = [self.passthrough[SLOTDATA.upgrade_building(i+1)] for i in range(5)] + self.level_logic_type = self.passthrough[SLOTDATA.rand_level_logic] + self.upgrade_logic_type = self.passthrough[SLOTDATA.rand_upgrade_logic] + self.random_logic_phase_length = [self.passthrough[SLOTDATA.phase_length(i)] for i in range(5)] + self.category_random_logic_amounts = {cat: self.passthrough[SLOTDATA.cat_buildings_amount(cat)] + for cat in [CATEGORY.belt_low, CATEGORY.miner_low, + CATEGORY.processors_low, CATEGORY.painting_low]} + # Forces balancers, tunnel, and trash to not appear in regen to make UT more accurate + self.options.early_balancer_tunnel_and_trash.value = 0 + return + + # "MAM" goal is supposed to be longer than vanilla, but to not have more options than necessary, + # both goal amounts for "MAM" and "Even fasterer" are set in a single option. + if self.options.goal == GOALS.mam and self.options.goal_amount < 27: + raise OptionError(self.player_name + + ": When setting goal to 1 ('mam'), goal_amount must be at least 27 and not " + + str(self.options.goal_amount.value)) + + # If lock_belt_and_extractor is true, the only sphere 1 locations will be achievements + if self.options.lock_belt_and_extractor and not self.options.include_achievements: + raise OptionError(self.player_name + ": Achievements must be included when belt and extractor are locked") + + # Determines maxlevel and finaltier, which are needed for location and item generation + if self.options.goal == GOALS.vanilla: + self.maxlevel = 25 + self.finaltier = 8 + elif self.options.goal == GOALS.mam: + self.maxlevel = self.options.goal_amount - 1 + self.finaltier = 8 + elif self.options.goal == GOALS.even_fasterer: + self.maxlevel = 26 + self.finaltier = self.options.goal_amount.value + else: # goal == efficiency_iii + self.maxlevel = 26 + self.finaltier = 8 + + # Setting the seed for the game before any other randomization call is done + self.client_seed = self.random.randint(0, 100000) + + # Determines the order of buildings for levels logic + if self.options.randomize_level_requirements: + self.level_logic_type = self.options.randomize_level_logic.current_key + if self.level_logic_type.endswith(OPTIONS.logic_shuffled) or self.level_logic_type == OPTIONS.logic_dopamine: + vanilla_list = [ITEMS.cutter, ITEMS.painter, ITEMS.stacker] + while len(vanilla_list) > 0: + index = self.random.randint(0, len(vanilla_list)-1) + next_building = vanilla_list.pop(index) + if next_building == ITEMS.cutter: + vanilla_list.append(ITEMS.rotator) + if next_building == ITEMS.painter: + vanilla_list.append(ITEMS.color_mixer) + self.level_logic.append(next_building) + else: + self.level_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + else: + self.level_logic_type = OPTIONS.logic_vanilla + self.level_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + + # Determines the order of buildings for upgrades logic + if self.options.randomize_upgrade_requirements: + self.upgrade_logic_type = self.options.randomize_upgrade_logic.current_key + if self.upgrade_logic_type == OPTIONS.logic_hardcore: + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + elif self.upgrade_logic_type == OPTIONS.logic_category: + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.stacker, ITEMS.painter, ITEMS.color_mixer] + else: + vanilla_list = [ITEMS.cutter, ITEMS.painter, ITEMS.stacker] + while len(vanilla_list) > 0: + index = self.random.randint(0, len(vanilla_list)-1) + next_building = vanilla_list.pop(index) + if next_building == ITEMS.cutter: + vanilla_list.append(ITEMS.rotator) + if next_building == ITEMS.painter: + vanilla_list.append(ITEMS.color_mixer) + self.upgrade_logic.append(next_building) + else: + self.upgrade_logic_type = OPTIONS.logic_vanilla_like + self.upgrade_logic = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + + # Determine lenghts of phases in level logic type "random" + self.random_logic_phase_length = [1, 1, 1, 1, 1] + if self.level_logic_type.startswith(OPTIONS.logic_random_steps): + remaininglength = self.maxlevel - 1 + for phase in range(0, 5): + if self.random.random() < 0.1: # Make sure that longer phases are less frequent + self.random_logic_phase_length[phase] = self.random.randint(0, remaininglength) + else: + self.random_logic_phase_length[phase] = self.random.randint(0, remaininglength // (6 - phase)) + remaininglength -= self.random_logic_phase_length[phase] + + # Determine amount of needed buildings for each category in upgrade logic type "category_random" + self.category_random_logic_amounts = {CATEGORY.belt_low: 0, CATEGORY.miner_low: 1, + CATEGORY.processors_low: 2, CATEGORY.painting_low: 3} + if self.upgrade_logic_type == OPTIONS.logic_category_random: + cats = [CATEGORY.belt_low, CATEGORY.miner_low, CATEGORY.processors_low, CATEGORY.painting_low] + nextcat = self.random.choice(cats) + self.category_random_logic_amounts[nextcat] = 0 + cats.remove(nextcat) + for cat in cats: + self.category_random_logic_amounts[cat] = self.random.randint(0, 5) + + def create_item(self, name: str) -> Item: + return ShapezItem(name, item_table[name](self.options), self.item_name_to_id[name], self.player) + + def get_filler_item_name(self) -> str: + return filler(self.random.random(), bool(self.options.include_whacky_upgrades)) + + def append_shapesanity(self, name: str) -> None: + """This method is given as a parameter when creating the locations for shapesanity.""" + self.shapesanity_names.append(name) + + def add_alias(self, location_name: str, alias: str): + """This method is given as a parameter when locations with helpful aliases for UT are created.""" + if self.ut_active: + self.location_id_to_alias[self.location_name_to_id[location_name]] = alias + + def create_regions(self) -> None: + # Create list of all included level and upgrade locations based on player options + # This already includes the region to be placed in and the LocationProgressType + self.included_locations = {**addlevels(self.maxlevel, self.level_logic_type, + self.random_logic_phase_length), + **addupgrades(self.finaltier, self.upgrade_logic_type, + self.category_random_logic_amounts)} + + # Add shapesanity to included location and creates the corresponding list based on player options + if self.ut_active: + self.shapesanity_names = self.passthrough[SLOTDATA.shapesanity] + self.included_locations.update(addshapesanity_ut(self.shapesanity_names, self.add_alias)) + else: + self.included_locations.update(addshapesanity(self.options.shapesanity_amount.value, self.random, + self.append_shapesanity, self.add_alias)) + + # Add achievements to included locations based on player options + if self.options.include_achievements: + self.included_locations.update(addachievements( + bool(self.options.exclude_softlock_achievements), bool(self.options.exclude_long_playtime_achievements), + bool(self.options.exclude_progression_unreasonable), self.maxlevel, self.upgrade_logic_type, + self.category_random_logic_amounts, self.options.goal.current_key, self.included_locations, + self.add_alias, self.upgrade_traps_allowed)) + + # Save the final amount of to-be-filled locations + self.location_count = len(self.included_locations) + + # Create regions and entrances based on included locations and player options + self.multiworld.regions.extend(create_shapez_regions(self.player, self.multiworld, + bool(self.options.allow_floating_layers.value), + self.included_locations, self.location_name_to_id, + self.level_logic, self.upgrade_logic, + self.options.early_balancer_tunnel_and_trash.current_key, + self.options.goal.current_key)) + + def create_items(self) -> None: + # Include guaranteed items (game mechanic unlocks and 7x4 big upgrades) + included_items: List[Item] = ([self.create_item(name) for name in buildings_processing.keys()] + + [self.create_item(name) for name in buildings_routing.keys()] + + [self.create_item(name) for name in buildings_other.keys()] + + [self.create_item(name) for name in buildings_top_row.keys()] + + [self.create_item(name) for name in buildings_wires.keys()] + + [self.create_item(name) for name in gameplay_unlocks.keys()] + + [self.create_item(name) for name in big_upgrades for _ in range(7)]) + + if not self.options.lock_belt_and_extractor: + for name in belt_and_extractor: + self.multiworld.push_precollected(self.create_item(name)) + else: # This also requires self.options.include_achievements to be true + included_items.extend([self.create_item(name) for name in belt_and_extractor.keys()]) + + # Give a detailed error message if there are already more items than available locations. + # At the moment, this won't happen, but it's better for debugging in case a future update breaks things. + if len(included_items) > self.location_count: + raise RuntimeError(self.player_name + ": There are more guaranteed items than available locations") + + # Get value from traps probability option and convert to float + traps_probability = self.options.traps_percentage/100 + split_draining = bool(self.options.split_inventory_draining_trap) + # Fill remaining locations with fillers + for x in range(self.location_count - len(included_items)): + if self.random.random() < traps_probability: + # Fill with trap + included_items.append(self.create_item(trap(self.random.random(), split_draining, + self.upgrade_traps_allowed))) + else: + # Fil with random filler item + included_items.append(self.create_item(self.get_filler_item_name())) + + # Add correct number of items to itempool + self.multiworld.itempool += included_items + + # Add balancer, tunnel, and trash to early items if player options say so + if self.options.early_balancer_tunnel_and_trash == OPTIONS.sphere_1: + self.multiworld.early_items[self.player][ITEMS.balancer] = 1 + self.multiworld.early_items[self.player][ITEMS.tunnel] = 1 + self.multiworld.early_items[self.player][ITEMS.trash] = 1 + + def set_rules(self) -> None: + # Levels might need more belt speed if they require throughput per second. As the randomization of what levels + # need throughput happens in the client mod, this logic needs to be applied to all levels. This is applied to + # every individual level instead of regions, because they would need a much more complex calculation to prevent + # softlocks. + + def f(x: int, name: str): + # These calculations are taken from the client mod + if x < 26: + throughput = math.ceil((2.999+x*0.333)*self.options.required_shapes_multiplier/10) + else: + throughput = min((4+(x-26)*0.25)*self.options.required_shapes_multiplier/10, 200) + if throughput/32 >= 1: + add_rule(self.get_location(name), + lambda state: has_x_belt_multiplier(state, self.player, throughput/32)) + + if not self.options.throughput_levels_ratio == 0: + f(0, LOCATIONS.level(1, 1)) + f(19, LOCATIONS.level(20, 1)) + f(19, LOCATIONS.level(20, 2)) + for _x in range(self.maxlevel): + f(_x, LOCATIONS.level(_x+1)) + if self.options.goal.current_key in [GOALS.vanilla, GOALS.mam]: + f(self.maxlevel, LOCATIONS.goal) + + def fill_slot_data(self) -> Mapping[str, Any]: + # Buildings logic; all buildings as individual parameters + level_logic_data = {SLOTDATA.level_building(x+1): self.level_logic[x] for x in range(5)} + upgrade_logic_data = {SLOTDATA.upgrade_building(x+1): self.upgrade_logic[x] for x in range(5)} + # Randomized values for certain logic types + logic_type_random_data = {SLOTDATA.phase_length(x): self.random_logic_phase_length[x] for x in range(0, 5)} + logic_type_cat_random_data = {SLOTDATA.cat_buildings_amount(cat): self.category_random_logic_amounts[cat] + for cat in [CATEGORY.belt_low, CATEGORY.miner_low, + CATEGORY.processors_low, CATEGORY.painting_low]} + + # Options that are relevant to the mod + option_data = { + SLOTDATA.goal: self.options.goal.current_key, + SLOTDATA.maxlevel: self.maxlevel, + SLOTDATA.finaltier: self.finaltier, + SLOTDATA.req_shapes_mult: self.options.required_shapes_multiplier.value, + SLOTDATA.allow_float_layers: bool(self.options.allow_floating_layers), + SLOTDATA.rand_level_req: bool(self.options.randomize_level_requirements), + SLOTDATA.rand_upgrade_req: bool(self.options.randomize_upgrade_requirements), + SLOTDATA.rand_level_logic: self.level_logic_type, + SLOTDATA.rand_upgrade_logic: self.upgrade_logic_type, + SLOTDATA.throughput_levels_ratio: self.options.throughput_levels_ratio.value, + SLOTDATA.comp_growth_gradient: self.options.complexity_growth_gradient.value, + SLOTDATA.same_late: bool(self.options.same_late_upgrade_requirements), + SLOTDATA.toolbar_shuffling: bool(self.options.toolbar_shuffling), + } + + return {**level_logic_data, **upgrade_logic_data, **option_data, **logic_type_random_data, + **logic_type_cat_random_data, SLOTDATA.seed: self.client_seed, + SLOTDATA.shapesanity: self.shapesanity_names} + + def interpret_slot_data(self, slot_data: Dict[str, Any]) -> Dict[str, Any]: + """Helper function for Universal Tracker""" + return slot_data diff --git a/worlds/shapez/common/__init__.py b/worlds/shapez/common/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/shapez/common/options.py b/worlds/shapez/common/options.py new file mode 100644 index 000000000000..aa66ced03294 --- /dev/null +++ b/worlds/shapez/common/options.py @@ -0,0 +1,190 @@ +import random +import typing + +from Options import FreeText, NumericOption + + +class FloatRangeText(FreeText, NumericOption): + """FreeText option optimized for entering float numbers. + Supports everything that Range supports. + range_start and range_end have to be floats, while default has to be a string.""" + + default = "0.0" + value: float + range_start: float = 0.0 + range_end: float = 1.0 + + def __init__(self, value: str): + super().__init__(value) + value = value.lower() + if value.startswith("random"): + self.value = self.weighted_range(value) + elif value == "default" and hasattr(self, "default"): + self.value = float(self.default) + elif value == "high": + self.value = self.range_end + elif value == "low": + self.value = self.range_start + elif self.range_start == 0.0 \ + and hasattr(self, "default") \ + and self.default != "0.0" \ + and value in ("true", "false"): + # these are the conditions where "true" and "false" make sense + if value == "true": + self.value = float(self.default) + else: # "false" + self.value = 0.0 + else: + try: + self.value = float(value) + except ValueError: + raise Exception(f"Invalid value for option {self.__class__.__name__}: {value}") + except OverflowError: + raise Exception(f"Out of range floating value for option {self.__class__.__name__}: {value}") + if self.value < self.range_start: + raise Exception(f"{value} is lower than minimum {self.range_start} for option {self.__class__.__name__}") + if self.value > self.range_end: + raise Exception(f"{value} is higher than maximum {self.range_end} for option {self.__class__.__name__}") + + @classmethod + def from_text(cls, text: str) -> typing.Any: + return cls(text) + + @classmethod + def weighted_range(cls, text: str) -> float: + if text == "random-low": + return random.triangular(cls.range_start, cls.range_end, cls.range_start) + elif text == "random-high": + return random.triangular(cls.range_start, cls.range_end, cls.range_end) + elif text == "random-middle": + return random.triangular(cls.range_start, cls.range_end) + elif text.startswith("random-range-"): + return cls.custom_range(text) + elif text == "random": + return random.uniform(cls.range_start, cls.range_end) + else: + raise Exception(f"random text \"{text}\" did not resolve to a recognized pattern. " + f"Acceptable values are: random, random-high, random-middle, random-low, " + f"random-range-low--, random-range-middle--, " + f"random-range-high--, or random-range--.") + + @classmethod + def custom_range(cls, text: str) -> float: + textsplit = text.split("-") + try: + random_range = [float(textsplit[len(textsplit) - 2]), float(textsplit[len(textsplit) - 1])] + except ValueError: + raise ValueError(f"Invalid random range {text} for option {cls.__name__}") + except OverflowError: + raise Exception(f"Out of range floating value for option {cls.__name__}: {text}") + random_range.sort() + if random_range[0] < cls.range_start or random_range[1] > cls.range_end: + raise Exception( + f"{random_range[0]}-{random_range[1]} is outside allowed range " + f"{cls.range_start}-{cls.range_end} for option {cls.__name__}") + if text.startswith("random-range-low"): + return random.triangular(random_range[0], random_range[1], random_range[0]) + elif text.startswith("random-range-middle"): + return random.triangular(random_range[0], random_range[1]) + elif text.startswith("random-range-high"): + return random.triangular(random_range[0], random_range[1], random_range[1]) + else: + return random.uniform(random_range[0], random_range[1]) + + @property + def current_key(self) -> str: + return str(self.value) + + @classmethod + def get_option_name(cls, value: float) -> str: + return str(value) + + def __eq__(self, other: typing.Any): + if isinstance(other, NumericOption): + return self.value == other.value + else: + return typing.cast(bool, self.value == other) + + def __lt__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value < other.value + else: + return self.value < other + + def __le__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value <= other.value + else: + return self.value <= other + + def __gt__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value > other.value + else: + return self.value > other + + def __ge__(self, other: typing.Union[int, float, NumericOption]) -> bool: + if isinstance(other, NumericOption): + return self.value >= other.value + else: + return self.value >= other + + def __int__(self) -> int: + return int(self.value) + + def __and__(self, other: typing.Any) -> int: + raise TypeError("& operator not supported for float values") + + def __floordiv__(self, other: typing.Any) -> int: + return int(self.value // float(other)) + + def __invert__(self) -> int: + raise TypeError("~ operator not supported for float values") + + def __lshift__(self, other: typing.Any) -> int: + raise TypeError("<< operator not supported for float values") + + def __mod__(self, other: typing.Any) -> float: + return self.value % float(other) + + def __neg__(self) -> float: + return -self.value + + def __or__(self, other: typing.Any) -> int: + raise TypeError("| operator not supported for float values") + + def __pos__(self) -> float: + return +self.value + + def __rand__(self, other: typing.Any) -> int: + raise TypeError("& operator not supported for float values") + + def __rfloordiv__(self, other: typing.Any) -> int: + return int(float(other) // self.value) + + def __rlshift__(self, other: typing.Any) -> int: + raise TypeError("<< operator not supported for float values") + + def __rmod__(self, other: typing.Any) -> float: + return float(other) % self.value + + def __ror__(self, other: typing.Any) -> int: + raise TypeError("| operator not supported for float values") + + def __round__(self, ndigits: typing.Optional[int] = None) -> float: + return round(self.value, ndigits) + + def __rpow__(self, base: typing.Any) -> typing.Any: + return base ** self.value + + def __rrshift__(self, other: typing.Any) -> int: + raise TypeError(">> operator not supported for float values") + + def __rshift__(self, other: typing.Any) -> int: + raise TypeError(">> operator not supported for float values") + + def __rxor__(self, other: typing.Any) -> int: + raise TypeError("^ operator not supported for float values") + + def __xor__(self, other: typing.Any) -> int: + raise TypeError("^ operator not supported for float values") diff --git a/worlds/shapez/data/__init__.py b/worlds/shapez/data/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/shapez/data/generate.py b/worlds/shapez/data/generate.py new file mode 100644 index 000000000000..27d74e865d08 --- /dev/null +++ b/worlds/shapez/data/generate.py @@ -0,0 +1,134 @@ +import itertools +import time +from typing import Dict, List + +from worlds.shapez.data.strings import SHAPESANITY, REGIONS + +shapesanity_simple: Dict[str, str] = {} +shapesanity_1_4: Dict[str, str] = {} +shapesanity_two_sided: Dict[str, str] = {} +shapesanity_three_parts: Dict[str, str] = {} +shapesanity_four_parts: Dict[str, str] = {} +subshape_names = [SHAPESANITY.circle, SHAPESANITY.square, SHAPESANITY.star, SHAPESANITY.windmill] +color_names = [SHAPESANITY.red, SHAPESANITY.blue, SHAPESANITY.green, SHAPESANITY.yellow, SHAPESANITY.purple, + SHAPESANITY.cyan, SHAPESANITY.white, SHAPESANITY.uncolored] +short_subshapes = ["C", "R", "S", "W"] +short_colors = ["b", "c", "g", "p", "r", "u", "w", "y"] + + +def color_to_needed_building(color_list: List[str]) -> str: + for next_color in color_list: + if next_color in [SHAPESANITY.yellow, SHAPESANITY.purple, SHAPESANITY.cyan, SHAPESANITY.white, + "y", "p", "c", "w"]: + return REGIONS.mixed + for next_color in color_list: + if next_color not in [SHAPESANITY.uncolored, "u"]: + return REGIONS.painted + return REGIONS.uncol + + +def generate_shapesanity_pool() -> None: + # same shapes && same color + for color in color_names: + color_region = color_to_needed_building([color]) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.circle)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.square)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.star)] = REGIONS.sanity(REGIONS.full, color_region) + shapesanity_simple[SHAPESANITY.full(color, SHAPESANITY.windmill)] = REGIONS.sanity(REGIONS.east_wind, color_region) + for shape in subshape_names: + for color in color_names: + color_region = color_to_needed_building([color]) + shapesanity_simple[SHAPESANITY.half(color, shape)] = REGIONS.sanity(REGIONS.half, color_region) + shapesanity_simple[SHAPESANITY.piece(color, shape)] = REGIONS.sanity(REGIONS.piece, color_region) + shapesanity_simple[SHAPESANITY.cutout(color, shape)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_simple[SHAPESANITY.cornered(color, shape)] = REGIONS.sanity(REGIONS.stitched, color_region) + + # one color && 4 shapes (including empty) + for first_color, second_color, third_color, fourth_color in itertools.combinations(short_colors+["-"], 4): + colors = [first_color, second_color, third_color, fourth_color] + color_region = color_to_needed_building(colors) + shape_regions = [REGIONS.stitched, REGIONS.stitched] if fourth_color == "-" else [REGIONS.col_full, REGIONS.col_east_wind] + color_code = ''.join(colors) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.circle)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.square)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.star)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_1_4[SHAPESANITY.full(color_code, SHAPESANITY.windmill)] = REGIONS.sanity(shape_regions[1], color_region) + + # one shape && 4 colors (including empty) + for first_shape, second_shape, third_shape, fourth_shape in itertools.combinations(short_subshapes+["-"], 4): + for color in color_names: + shapesanity_1_4[SHAPESANITY.full(color, ''.join([first_shape, second_shape, third_shape, fourth_shape]))] \ + = REGIONS.sanity(REGIONS.stitched, color_to_needed_building([color])) + + combos = [shape + color for shape in short_subshapes for color in short_colors] + for first_combo, second_combo in itertools.permutations(combos, 2): + # 2-sided shapes + color_region = color_to_needed_building([first_combo[1], second_combo[1]]) + ordered_combo = " ".join(sorted([first_combo, second_combo])) + shape_regions = (([REGIONS.east_wind, REGIONS.east_wind, REGIONS.col_half] + if first_combo[0] == "W" else [REGIONS.col_full, REGIONS.col_full, REGIONS.col_half]) + if first_combo[0] == second_combo[0] else [REGIONS.stitched, REGIONS.half_half, REGIONS.stitched]) + shapesanity_two_sided[SHAPESANITY.three_one(first_combo, second_combo)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_two_sided[SHAPESANITY.halfhalf(ordered_combo)] = REGIONS.sanity(shape_regions[1], color_region) + shapesanity_two_sided[SHAPESANITY.checkered(ordered_combo)] = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_two_sided[SHAPESANITY.singles(ordered_combo, SHAPESANITY.adjacent_pos)] = REGIONS.sanity(shape_regions[2], color_region) + shapesanity_two_sided[SHAPESANITY.singles(ordered_combo, SHAPESANITY.cornered_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_two_sided[SHAPESANITY.two_one(first_combo, second_combo, SHAPESANITY.adjacent_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + shapesanity_two_sided[SHAPESANITY.two_one(first_combo, second_combo, SHAPESANITY.cornered_pos)] = REGIONS.sanity(REGIONS.stitched, color_region) + for third_combo in combos: + if third_combo in [first_combo, second_combo]: + continue + # 3-part shapes + colors = [first_combo[1], second_combo[1], third_combo[1]] + color_region = color_to_needed_building(colors) + ordered_two = " ".join(sorted([second_combo, third_combo])) + if not (first_combo[1] == second_combo[1] == third_combo[1] or + first_combo[0] == second_combo[0] == third_combo[0]): + ordered_all = " ".join(sorted([first_combo, second_combo, third_combo])) + shapesanity_three_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.stitched, color_region) + shape_regions = ([REGIONS.stitched, REGIONS.stitched] if not second_combo[0] == third_combo[0] + else (([REGIONS.east_wind, REGIONS.east_wind] if first_combo[0] == "W" + else [REGIONS.col_full, REGIONS.col_full]) + if first_combo[0] == second_combo[0] else [REGIONS.col_half_half, REGIONS.stitched])) + shapesanity_three_parts[SHAPESANITY.two_one_one(first_combo, ordered_two, SHAPESANITY.adjacent_pos)] \ + = REGIONS.sanity(shape_regions[0], color_region) + shapesanity_three_parts[SHAPESANITY.two_one_one(first_combo, ordered_two, SHAPESANITY.cornered_pos)] \ + = REGIONS.sanity(shape_regions[1], color_region) + for fourth_combo in combos: + if fourth_combo in [first_combo, second_combo, third_combo]: + continue + if (first_combo[1] == second_combo[1] == third_combo[1] == fourth_combo[1] or + first_combo[0] == second_combo[0] == third_combo[0] == fourth_combo[0]): + continue + colors = [first_combo[1], second_combo[1], third_combo[1], fourth_combo[1]] + color_region = color_to_needed_building(colors) + ordered_all = " ".join(sorted([first_combo, second_combo, third_combo, fourth_combo])) + if ((first_combo[0] == second_combo[0] and third_combo[0] == fourth_combo[0]) or + (first_combo[0] == third_combo[0] and second_combo[0] == fourth_combo[0]) or + (first_combo[0] == fourth_combo[0] and third_combo[0] == second_combo[0])): + shapesanity_four_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.col_half_half, color_region) + else: + shapesanity_four_parts[SHAPESANITY.singles(ordered_all)] = REGIONS.sanity(REGIONS.stitched, color_region) + + +if __name__ == "__main__": + start = time.time() + generate_shapesanity_pool() + print(time.time() - start) + with open("shapesanity_pool.py", "w") as outfile: + outfile.writelines(["shapesanity_simple = {\n"] + + [f" \"{name}\": \"{shapesanity_simple[name]}\",\n" + for name in shapesanity_simple] + + ["}\n\nshapesanity_1_4 = {\n"] + + [f" \"{name}\": \"{shapesanity_1_4[name]}\",\n" + for name in shapesanity_1_4] + + ["}\n\nshapesanity_two_sided = {\n"] + + [f" \"{name}\": \"{shapesanity_two_sided[name]}\",\n" + for name in shapesanity_two_sided] + + ["}\n\nshapesanity_three_parts = {\n"] + + [f" \"{name}\": \"{shapesanity_three_parts[name]}\",\n" + for name in shapesanity_three_parts] + + ["}\n\nshapesanity_four_parts = {\n"] + + [f" \"{name}\": \"{shapesanity_four_parts[name]}\",\n" + for name in shapesanity_four_parts] + + ["}\n"]) diff --git a/worlds/shapez/data/options.json b/worlds/shapez/data/options.json new file mode 100644 index 000000000000..d60f02e0fd93 --- /dev/null +++ b/worlds/shapez/data/options.json @@ -0,0 +1,4 @@ +{ + "max_levels_and_upgrades": 500, + "max_shapesanity": 1000 +} diff --git a/worlds/shapez/data/shapesanity_pool.py b/worlds/shapez/data/shapesanity_pool.py new file mode 100644 index 000000000000..b0ae132e5432 --- /dev/null +++ b/worlds/shapez/data/shapesanity_pool.py @@ -0,0 +1,75814 @@ +shapesanity_simple = { + "Red Circle": "Shapesanity Full Painted", + "Red Square": "Shapesanity Full Painted", + "Red Star": "Shapesanity Full Painted", + "Red Windmill": "Shapesanity East Windmill Painted", + "Blue Circle": "Shapesanity Full Painted", + "Blue Square": "Shapesanity Full Painted", + "Blue Star": "Shapesanity Full Painted", + "Blue Windmill": "Shapesanity East Windmill Painted", + "Green Circle": "Shapesanity Full Painted", + "Green Square": "Shapesanity Full Painted", + "Green Star": "Shapesanity Full Painted", + "Green Windmill": "Shapesanity East Windmill Painted", + "Yellow Circle": "Shapesanity Full Mixed", + "Yellow Square": "Shapesanity Full Mixed", + "Yellow Star": "Shapesanity Full Mixed", + "Yellow Windmill": "Shapesanity East Windmill Mixed", + "Purple Circle": "Shapesanity Full Mixed", + "Purple Square": "Shapesanity Full Mixed", + "Purple Star": "Shapesanity Full Mixed", + "Purple Windmill": "Shapesanity East Windmill Mixed", + "Cyan Circle": "Shapesanity Full Mixed", + "Cyan Square": "Shapesanity Full Mixed", + "Cyan Star": "Shapesanity Full Mixed", + "Cyan Windmill": "Shapesanity East Windmill Mixed", + "White Circle": "Shapesanity Full Mixed", + "White Square": "Shapesanity Full Mixed", + "White Star": "Shapesanity Full Mixed", + "White Windmill": "Shapesanity East Windmill Mixed", + "Uncolored Circle": "Shapesanity Full Uncolored", + "Uncolored Square": "Shapesanity Full Uncolored", + "Uncolored Star": "Shapesanity Full Uncolored", + "Uncolored Windmill": "Shapesanity East Windmill Uncolored", + "Half Red Circle": "Shapesanity Half Painted", + "Red Circle Piece": "Shapesanity Piece Painted", + "Cut Out Red Circle": "Shapesanity Stitched Painted", + "Cornered Red Circle": "Shapesanity Stitched Painted", + "Half Blue Circle": "Shapesanity Half Painted", + "Blue Circle Piece": "Shapesanity Piece Painted", + "Cut Out Blue Circle": "Shapesanity Stitched Painted", + "Cornered Blue Circle": "Shapesanity Stitched Painted", + "Half Green Circle": "Shapesanity Half Painted", + "Green Circle Piece": "Shapesanity Piece Painted", + "Cut Out Green Circle": "Shapesanity Stitched Painted", + "Cornered Green Circle": "Shapesanity Stitched Painted", + "Half Yellow Circle": "Shapesanity Half Mixed", + "Yellow Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Circle": "Shapesanity Stitched Mixed", + "Cornered Yellow Circle": "Shapesanity Stitched Mixed", + "Half Purple Circle": "Shapesanity Half Mixed", + "Purple Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Circle": "Shapesanity Stitched Mixed", + "Cornered Purple Circle": "Shapesanity Stitched Mixed", + "Half Cyan Circle": "Shapesanity Half Mixed", + "Cyan Circle Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Circle": "Shapesanity Stitched Mixed", + "Cornered Cyan Circle": "Shapesanity Stitched Mixed", + "Half White Circle": "Shapesanity Half Mixed", + "White Circle Piece": "Shapesanity Piece Mixed", + "Cut Out White Circle": "Shapesanity Stitched Mixed", + "Cornered White Circle": "Shapesanity Stitched Mixed", + "Half Uncolored Circle": "Shapesanity Half Uncolored", + "Uncolored Circle Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Circle": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Circle": "Shapesanity Stitched Uncolored", + "Half Red Square": "Shapesanity Half Painted", + "Red Square Piece": "Shapesanity Piece Painted", + "Cut Out Red Square": "Shapesanity Stitched Painted", + "Cornered Red Square": "Shapesanity Stitched Painted", + "Half Blue Square": "Shapesanity Half Painted", + "Blue Square Piece": "Shapesanity Piece Painted", + "Cut Out Blue Square": "Shapesanity Stitched Painted", + "Cornered Blue Square": "Shapesanity Stitched Painted", + "Half Green Square": "Shapesanity Half Painted", + "Green Square Piece": "Shapesanity Piece Painted", + "Cut Out Green Square": "Shapesanity Stitched Painted", + "Cornered Green Square": "Shapesanity Stitched Painted", + "Half Yellow Square": "Shapesanity Half Mixed", + "Yellow Square Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Square": "Shapesanity Stitched Mixed", + "Cornered Yellow Square": "Shapesanity Stitched Mixed", + "Half Purple Square": "Shapesanity Half Mixed", + "Purple Square Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Square": "Shapesanity Stitched Mixed", + "Cornered Purple Square": "Shapesanity Stitched Mixed", + "Half Cyan Square": "Shapesanity Half Mixed", + "Cyan Square Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Square": "Shapesanity Stitched Mixed", + "Cornered Cyan Square": "Shapesanity Stitched Mixed", + "Half White Square": "Shapesanity Half Mixed", + "White Square Piece": "Shapesanity Piece Mixed", + "Cut Out White Square": "Shapesanity Stitched Mixed", + "Cornered White Square": "Shapesanity Stitched Mixed", + "Half Uncolored Square": "Shapesanity Half Uncolored", + "Uncolored Square Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Square": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Square": "Shapesanity Stitched Uncolored", + "Half Red Star": "Shapesanity Half Painted", + "Red Star Piece": "Shapesanity Piece Painted", + "Cut Out Red Star": "Shapesanity Stitched Painted", + "Cornered Red Star": "Shapesanity Stitched Painted", + "Half Blue Star": "Shapesanity Half Painted", + "Blue Star Piece": "Shapesanity Piece Painted", + "Cut Out Blue Star": "Shapesanity Stitched Painted", + "Cornered Blue Star": "Shapesanity Stitched Painted", + "Half Green Star": "Shapesanity Half Painted", + "Green Star Piece": "Shapesanity Piece Painted", + "Cut Out Green Star": "Shapesanity Stitched Painted", + "Cornered Green Star": "Shapesanity Stitched Painted", + "Half Yellow Star": "Shapesanity Half Mixed", + "Yellow Star Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Star": "Shapesanity Stitched Mixed", + "Cornered Yellow Star": "Shapesanity Stitched Mixed", + "Half Purple Star": "Shapesanity Half Mixed", + "Purple Star Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Star": "Shapesanity Stitched Mixed", + "Cornered Purple Star": "Shapesanity Stitched Mixed", + "Half Cyan Star": "Shapesanity Half Mixed", + "Cyan Star Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Star": "Shapesanity Stitched Mixed", + "Cornered Cyan Star": "Shapesanity Stitched Mixed", + "Half White Star": "Shapesanity Half Mixed", + "White Star Piece": "Shapesanity Piece Mixed", + "Cut Out White Star": "Shapesanity Stitched Mixed", + "Cornered White Star": "Shapesanity Stitched Mixed", + "Half Uncolored Star": "Shapesanity Half Uncolored", + "Uncolored Star Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Star": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Star": "Shapesanity Stitched Uncolored", + "Half Red Windmill": "Shapesanity Half Painted", + "Red Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Red Windmill": "Shapesanity Stitched Painted", + "Cornered Red Windmill": "Shapesanity Stitched Painted", + "Half Blue Windmill": "Shapesanity Half Painted", + "Blue Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Blue Windmill": "Shapesanity Stitched Painted", + "Cornered Blue Windmill": "Shapesanity Stitched Painted", + "Half Green Windmill": "Shapesanity Half Painted", + "Green Windmill Piece": "Shapesanity Piece Painted", + "Cut Out Green Windmill": "Shapesanity Stitched Painted", + "Cornered Green Windmill": "Shapesanity Stitched Painted", + "Half Yellow Windmill": "Shapesanity Half Mixed", + "Yellow Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Yellow Windmill": "Shapesanity Stitched Mixed", + "Cornered Yellow Windmill": "Shapesanity Stitched Mixed", + "Half Purple Windmill": "Shapesanity Half Mixed", + "Purple Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Purple Windmill": "Shapesanity Stitched Mixed", + "Cornered Purple Windmill": "Shapesanity Stitched Mixed", + "Half Cyan Windmill": "Shapesanity Half Mixed", + "Cyan Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out Cyan Windmill": "Shapesanity Stitched Mixed", + "Cornered Cyan Windmill": "Shapesanity Stitched Mixed", + "Half White Windmill": "Shapesanity Half Mixed", + "White Windmill Piece": "Shapesanity Piece Mixed", + "Cut Out White Windmill": "Shapesanity Stitched Mixed", + "Cornered White Windmill": "Shapesanity Stitched Mixed", + "Half Uncolored Windmill": "Shapesanity Half Uncolored", + "Uncolored Windmill Piece": "Shapesanity Piece Uncolored", + "Cut Out Uncolored Windmill": "Shapesanity Stitched Uncolored", + "Cornered Uncolored Windmill": "Shapesanity Stitched Uncolored", +} + +shapesanity_1_4 = { + "bcgp Circle": "Shapesanity Colorful Full Mixed", + "bcgp Square": "Shapesanity Colorful Full Mixed", + "bcgp Star": "Shapesanity Colorful Full Mixed", + "bcgp Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgr Circle": "Shapesanity Colorful Full Mixed", + "bcgr Square": "Shapesanity Colorful Full Mixed", + "bcgr Star": "Shapesanity Colorful Full Mixed", + "bcgr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgu Circle": "Shapesanity Colorful Full Mixed", + "bcgu Square": "Shapesanity Colorful Full Mixed", + "bcgu Star": "Shapesanity Colorful Full Mixed", + "bcgu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgw Circle": "Shapesanity Colorful Full Mixed", + "bcgw Square": "Shapesanity Colorful Full Mixed", + "bcgw Star": "Shapesanity Colorful Full Mixed", + "bcgw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcgy Circle": "Shapesanity Colorful Full Mixed", + "bcgy Square": "Shapesanity Colorful Full Mixed", + "bcgy Star": "Shapesanity Colorful Full Mixed", + "bcgy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcg- Circle": "Shapesanity Stitched Mixed", + "bcg- Square": "Shapesanity Stitched Mixed", + "bcg- Star": "Shapesanity Stitched Mixed", + "bcg- Windmill": "Shapesanity Stitched Mixed", + "bcpr Circle": "Shapesanity Colorful Full Mixed", + "bcpr Square": "Shapesanity Colorful Full Mixed", + "bcpr Star": "Shapesanity Colorful Full Mixed", + "bcpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpu Circle": "Shapesanity Colorful Full Mixed", + "bcpu Square": "Shapesanity Colorful Full Mixed", + "bcpu Star": "Shapesanity Colorful Full Mixed", + "bcpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpw Circle": "Shapesanity Colorful Full Mixed", + "bcpw Square": "Shapesanity Colorful Full Mixed", + "bcpw Star": "Shapesanity Colorful Full Mixed", + "bcpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcpy Circle": "Shapesanity Colorful Full Mixed", + "bcpy Square": "Shapesanity Colorful Full Mixed", + "bcpy Star": "Shapesanity Colorful Full Mixed", + "bcpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcp- Circle": "Shapesanity Stitched Mixed", + "bcp- Square": "Shapesanity Stitched Mixed", + "bcp- Star": "Shapesanity Stitched Mixed", + "bcp- Windmill": "Shapesanity Stitched Mixed", + "bcru Circle": "Shapesanity Colorful Full Mixed", + "bcru Square": "Shapesanity Colorful Full Mixed", + "bcru Star": "Shapesanity Colorful Full Mixed", + "bcru Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcrw Circle": "Shapesanity Colorful Full Mixed", + "bcrw Square": "Shapesanity Colorful Full Mixed", + "bcrw Star": "Shapesanity Colorful Full Mixed", + "bcrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcry Circle": "Shapesanity Colorful Full Mixed", + "bcry Square": "Shapesanity Colorful Full Mixed", + "bcry Star": "Shapesanity Colorful Full Mixed", + "bcry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcr- Circle": "Shapesanity Stitched Mixed", + "bcr- Square": "Shapesanity Stitched Mixed", + "bcr- Star": "Shapesanity Stitched Mixed", + "bcr- Windmill": "Shapesanity Stitched Mixed", + "bcuw Circle": "Shapesanity Colorful Full Mixed", + "bcuw Square": "Shapesanity Colorful Full Mixed", + "bcuw Star": "Shapesanity Colorful Full Mixed", + "bcuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcuy Circle": "Shapesanity Colorful Full Mixed", + "bcuy Square": "Shapesanity Colorful Full Mixed", + "bcuy Star": "Shapesanity Colorful Full Mixed", + "bcuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcu- Circle": "Shapesanity Stitched Mixed", + "bcu- Square": "Shapesanity Stitched Mixed", + "bcu- Star": "Shapesanity Stitched Mixed", + "bcu- Windmill": "Shapesanity Stitched Mixed", + "bcwy Circle": "Shapesanity Colorful Full Mixed", + "bcwy Square": "Shapesanity Colorful Full Mixed", + "bcwy Star": "Shapesanity Colorful Full Mixed", + "bcwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bcw- Circle": "Shapesanity Stitched Mixed", + "bcw- Square": "Shapesanity Stitched Mixed", + "bcw- Star": "Shapesanity Stitched Mixed", + "bcw- Windmill": "Shapesanity Stitched Mixed", + "bcy- Circle": "Shapesanity Stitched Mixed", + "bcy- Square": "Shapesanity Stitched Mixed", + "bcy- Star": "Shapesanity Stitched Mixed", + "bcy- Windmill": "Shapesanity Stitched Mixed", + "bgpr Circle": "Shapesanity Colorful Full Mixed", + "bgpr Square": "Shapesanity Colorful Full Mixed", + "bgpr Star": "Shapesanity Colorful Full Mixed", + "bgpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpu Circle": "Shapesanity Colorful Full Mixed", + "bgpu Square": "Shapesanity Colorful Full Mixed", + "bgpu Star": "Shapesanity Colorful Full Mixed", + "bgpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpw Circle": "Shapesanity Colorful Full Mixed", + "bgpw Square": "Shapesanity Colorful Full Mixed", + "bgpw Star": "Shapesanity Colorful Full Mixed", + "bgpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgpy Circle": "Shapesanity Colorful Full Mixed", + "bgpy Square": "Shapesanity Colorful Full Mixed", + "bgpy Star": "Shapesanity Colorful Full Mixed", + "bgpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgp- Circle": "Shapesanity Stitched Mixed", + "bgp- Square": "Shapesanity Stitched Mixed", + "bgp- Star": "Shapesanity Stitched Mixed", + "bgp- Windmill": "Shapesanity Stitched Mixed", + "bgru Circle": "Shapesanity Colorful Full Painted", + "bgru Square": "Shapesanity Colorful Full Painted", + "bgru Star": "Shapesanity Colorful Full Painted", + "bgru Windmill": "Shapesanity Colorful East Windmill Painted", + "bgrw Circle": "Shapesanity Colorful Full Mixed", + "bgrw Square": "Shapesanity Colorful Full Mixed", + "bgrw Star": "Shapesanity Colorful Full Mixed", + "bgrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgry Circle": "Shapesanity Colorful Full Mixed", + "bgry Square": "Shapesanity Colorful Full Mixed", + "bgry Star": "Shapesanity Colorful Full Mixed", + "bgry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgr- Circle": "Shapesanity Stitched Painted", + "bgr- Square": "Shapesanity Stitched Painted", + "bgr- Star": "Shapesanity Stitched Painted", + "bgr- Windmill": "Shapesanity Stitched Painted", + "bguw Circle": "Shapesanity Colorful Full Mixed", + "bguw Square": "Shapesanity Colorful Full Mixed", + "bguw Star": "Shapesanity Colorful Full Mixed", + "bguw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bguy Circle": "Shapesanity Colorful Full Mixed", + "bguy Square": "Shapesanity Colorful Full Mixed", + "bguy Star": "Shapesanity Colorful Full Mixed", + "bguy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgu- Circle": "Shapesanity Stitched Painted", + "bgu- Square": "Shapesanity Stitched Painted", + "bgu- Star": "Shapesanity Stitched Painted", + "bgu- Windmill": "Shapesanity Stitched Painted", + "bgwy Circle": "Shapesanity Colorful Full Mixed", + "bgwy Square": "Shapesanity Colorful Full Mixed", + "bgwy Star": "Shapesanity Colorful Full Mixed", + "bgwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bgw- Circle": "Shapesanity Stitched Mixed", + "bgw- Square": "Shapesanity Stitched Mixed", + "bgw- Star": "Shapesanity Stitched Mixed", + "bgw- Windmill": "Shapesanity Stitched Mixed", + "bgy- Circle": "Shapesanity Stitched Mixed", + "bgy- Square": "Shapesanity Stitched Mixed", + "bgy- Star": "Shapesanity Stitched Mixed", + "bgy- Windmill": "Shapesanity Stitched Mixed", + "bpru Circle": "Shapesanity Colorful Full Mixed", + "bpru Square": "Shapesanity Colorful Full Mixed", + "bpru Star": "Shapesanity Colorful Full Mixed", + "bpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "bprw Circle": "Shapesanity Colorful Full Mixed", + "bprw Square": "Shapesanity Colorful Full Mixed", + "bprw Star": "Shapesanity Colorful Full Mixed", + "bprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpry Circle": "Shapesanity Colorful Full Mixed", + "bpry Square": "Shapesanity Colorful Full Mixed", + "bpry Star": "Shapesanity Colorful Full Mixed", + "bpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpr- Circle": "Shapesanity Stitched Mixed", + "bpr- Square": "Shapesanity Stitched Mixed", + "bpr- Star": "Shapesanity Stitched Mixed", + "bpr- Windmill": "Shapesanity Stitched Mixed", + "bpuw Circle": "Shapesanity Colorful Full Mixed", + "bpuw Square": "Shapesanity Colorful Full Mixed", + "bpuw Star": "Shapesanity Colorful Full Mixed", + "bpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpuy Circle": "Shapesanity Colorful Full Mixed", + "bpuy Square": "Shapesanity Colorful Full Mixed", + "bpuy Star": "Shapesanity Colorful Full Mixed", + "bpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpu- Circle": "Shapesanity Stitched Mixed", + "bpu- Square": "Shapesanity Stitched Mixed", + "bpu- Star": "Shapesanity Stitched Mixed", + "bpu- Windmill": "Shapesanity Stitched Mixed", + "bpwy Circle": "Shapesanity Colorful Full Mixed", + "bpwy Square": "Shapesanity Colorful Full Mixed", + "bpwy Star": "Shapesanity Colorful Full Mixed", + "bpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bpw- Circle": "Shapesanity Stitched Mixed", + "bpw- Square": "Shapesanity Stitched Mixed", + "bpw- Star": "Shapesanity Stitched Mixed", + "bpw- Windmill": "Shapesanity Stitched Mixed", + "bpy- Circle": "Shapesanity Stitched Mixed", + "bpy- Square": "Shapesanity Stitched Mixed", + "bpy- Star": "Shapesanity Stitched Mixed", + "bpy- Windmill": "Shapesanity Stitched Mixed", + "bruw Circle": "Shapesanity Colorful Full Mixed", + "bruw Square": "Shapesanity Colorful Full Mixed", + "bruw Star": "Shapesanity Colorful Full Mixed", + "bruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "bruy Circle": "Shapesanity Colorful Full Mixed", + "bruy Square": "Shapesanity Colorful Full Mixed", + "bruy Star": "Shapesanity Colorful Full Mixed", + "bruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "bru- Circle": "Shapesanity Stitched Painted", + "bru- Square": "Shapesanity Stitched Painted", + "bru- Star": "Shapesanity Stitched Painted", + "bru- Windmill": "Shapesanity Stitched Painted", + "brwy Circle": "Shapesanity Colorful Full Mixed", + "brwy Square": "Shapesanity Colorful Full Mixed", + "brwy Star": "Shapesanity Colorful Full Mixed", + "brwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "brw- Circle": "Shapesanity Stitched Mixed", + "brw- Square": "Shapesanity Stitched Mixed", + "brw- Star": "Shapesanity Stitched Mixed", + "brw- Windmill": "Shapesanity Stitched Mixed", + "bry- Circle": "Shapesanity Stitched Mixed", + "bry- Square": "Shapesanity Stitched Mixed", + "bry- Star": "Shapesanity Stitched Mixed", + "bry- Windmill": "Shapesanity Stitched Mixed", + "buwy Circle": "Shapesanity Colorful Full Mixed", + "buwy Square": "Shapesanity Colorful Full Mixed", + "buwy Star": "Shapesanity Colorful Full Mixed", + "buwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "buw- Circle": "Shapesanity Stitched Mixed", + "buw- Square": "Shapesanity Stitched Mixed", + "buw- Star": "Shapesanity Stitched Mixed", + "buw- Windmill": "Shapesanity Stitched Mixed", + "buy- Circle": "Shapesanity Stitched Mixed", + "buy- Square": "Shapesanity Stitched Mixed", + "buy- Star": "Shapesanity Stitched Mixed", + "buy- Windmill": "Shapesanity Stitched Mixed", + "bwy- Circle": "Shapesanity Stitched Mixed", + "bwy- Square": "Shapesanity Stitched Mixed", + "bwy- Star": "Shapesanity Stitched Mixed", + "bwy- Windmill": "Shapesanity Stitched Mixed", + "cgpr Circle": "Shapesanity Colorful Full Mixed", + "cgpr Square": "Shapesanity Colorful Full Mixed", + "cgpr Star": "Shapesanity Colorful Full Mixed", + "cgpr Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpu Circle": "Shapesanity Colorful Full Mixed", + "cgpu Square": "Shapesanity Colorful Full Mixed", + "cgpu Star": "Shapesanity Colorful Full Mixed", + "cgpu Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpw Circle": "Shapesanity Colorful Full Mixed", + "cgpw Square": "Shapesanity Colorful Full Mixed", + "cgpw Star": "Shapesanity Colorful Full Mixed", + "cgpw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgpy Circle": "Shapesanity Colorful Full Mixed", + "cgpy Square": "Shapesanity Colorful Full Mixed", + "cgpy Star": "Shapesanity Colorful Full Mixed", + "cgpy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgp- Circle": "Shapesanity Stitched Mixed", + "cgp- Square": "Shapesanity Stitched Mixed", + "cgp- Star": "Shapesanity Stitched Mixed", + "cgp- Windmill": "Shapesanity Stitched Mixed", + "cgru Circle": "Shapesanity Colorful Full Mixed", + "cgru Square": "Shapesanity Colorful Full Mixed", + "cgru Star": "Shapesanity Colorful Full Mixed", + "cgru Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgrw Circle": "Shapesanity Colorful Full Mixed", + "cgrw Square": "Shapesanity Colorful Full Mixed", + "cgrw Star": "Shapesanity Colorful Full Mixed", + "cgrw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgry Circle": "Shapesanity Colorful Full Mixed", + "cgry Square": "Shapesanity Colorful Full Mixed", + "cgry Star": "Shapesanity Colorful Full Mixed", + "cgry Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgr- Circle": "Shapesanity Stitched Mixed", + "cgr- Square": "Shapesanity Stitched Mixed", + "cgr- Star": "Shapesanity Stitched Mixed", + "cgr- Windmill": "Shapesanity Stitched Mixed", + "cguw Circle": "Shapesanity Colorful Full Mixed", + "cguw Square": "Shapesanity Colorful Full Mixed", + "cguw Star": "Shapesanity Colorful Full Mixed", + "cguw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cguy Circle": "Shapesanity Colorful Full Mixed", + "cguy Square": "Shapesanity Colorful Full Mixed", + "cguy Star": "Shapesanity Colorful Full Mixed", + "cguy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgu- Circle": "Shapesanity Stitched Mixed", + "cgu- Square": "Shapesanity Stitched Mixed", + "cgu- Star": "Shapesanity Stitched Mixed", + "cgu- Windmill": "Shapesanity Stitched Mixed", + "cgwy Circle": "Shapesanity Colorful Full Mixed", + "cgwy Square": "Shapesanity Colorful Full Mixed", + "cgwy Star": "Shapesanity Colorful Full Mixed", + "cgwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cgw- Circle": "Shapesanity Stitched Mixed", + "cgw- Square": "Shapesanity Stitched Mixed", + "cgw- Star": "Shapesanity Stitched Mixed", + "cgw- Windmill": "Shapesanity Stitched Mixed", + "cgy- Circle": "Shapesanity Stitched Mixed", + "cgy- Square": "Shapesanity Stitched Mixed", + "cgy- Star": "Shapesanity Stitched Mixed", + "cgy- Windmill": "Shapesanity Stitched Mixed", + "cpru Circle": "Shapesanity Colorful Full Mixed", + "cpru Square": "Shapesanity Colorful Full Mixed", + "cpru Star": "Shapesanity Colorful Full Mixed", + "cpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "cprw Circle": "Shapesanity Colorful Full Mixed", + "cprw Square": "Shapesanity Colorful Full Mixed", + "cprw Star": "Shapesanity Colorful Full Mixed", + "cprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpry Circle": "Shapesanity Colorful Full Mixed", + "cpry Square": "Shapesanity Colorful Full Mixed", + "cpry Star": "Shapesanity Colorful Full Mixed", + "cpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpr- Circle": "Shapesanity Stitched Mixed", + "cpr- Square": "Shapesanity Stitched Mixed", + "cpr- Star": "Shapesanity Stitched Mixed", + "cpr- Windmill": "Shapesanity Stitched Mixed", + "cpuw Circle": "Shapesanity Colorful Full Mixed", + "cpuw Square": "Shapesanity Colorful Full Mixed", + "cpuw Star": "Shapesanity Colorful Full Mixed", + "cpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpuy Circle": "Shapesanity Colorful Full Mixed", + "cpuy Square": "Shapesanity Colorful Full Mixed", + "cpuy Star": "Shapesanity Colorful Full Mixed", + "cpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpu- Circle": "Shapesanity Stitched Mixed", + "cpu- Square": "Shapesanity Stitched Mixed", + "cpu- Star": "Shapesanity Stitched Mixed", + "cpu- Windmill": "Shapesanity Stitched Mixed", + "cpwy Circle": "Shapesanity Colorful Full Mixed", + "cpwy Square": "Shapesanity Colorful Full Mixed", + "cpwy Star": "Shapesanity Colorful Full Mixed", + "cpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cpw- Circle": "Shapesanity Stitched Mixed", + "cpw- Square": "Shapesanity Stitched Mixed", + "cpw- Star": "Shapesanity Stitched Mixed", + "cpw- Windmill": "Shapesanity Stitched Mixed", + "cpy- Circle": "Shapesanity Stitched Mixed", + "cpy- Square": "Shapesanity Stitched Mixed", + "cpy- Star": "Shapesanity Stitched Mixed", + "cpy- Windmill": "Shapesanity Stitched Mixed", + "cruw Circle": "Shapesanity Colorful Full Mixed", + "cruw Square": "Shapesanity Colorful Full Mixed", + "cruw Star": "Shapesanity Colorful Full Mixed", + "cruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "cruy Circle": "Shapesanity Colorful Full Mixed", + "cruy Square": "Shapesanity Colorful Full Mixed", + "cruy Star": "Shapesanity Colorful Full Mixed", + "cruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cru- Circle": "Shapesanity Stitched Mixed", + "cru- Square": "Shapesanity Stitched Mixed", + "cru- Star": "Shapesanity Stitched Mixed", + "cru- Windmill": "Shapesanity Stitched Mixed", + "crwy Circle": "Shapesanity Colorful Full Mixed", + "crwy Square": "Shapesanity Colorful Full Mixed", + "crwy Star": "Shapesanity Colorful Full Mixed", + "crwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "crw- Circle": "Shapesanity Stitched Mixed", + "crw- Square": "Shapesanity Stitched Mixed", + "crw- Star": "Shapesanity Stitched Mixed", + "crw- Windmill": "Shapesanity Stitched Mixed", + "cry- Circle": "Shapesanity Stitched Mixed", + "cry- Square": "Shapesanity Stitched Mixed", + "cry- Star": "Shapesanity Stitched Mixed", + "cry- Windmill": "Shapesanity Stitched Mixed", + "cuwy Circle": "Shapesanity Colorful Full Mixed", + "cuwy Square": "Shapesanity Colorful Full Mixed", + "cuwy Star": "Shapesanity Colorful Full Mixed", + "cuwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "cuw- Circle": "Shapesanity Stitched Mixed", + "cuw- Square": "Shapesanity Stitched Mixed", + "cuw- Star": "Shapesanity Stitched Mixed", + "cuw- Windmill": "Shapesanity Stitched Mixed", + "cuy- Circle": "Shapesanity Stitched Mixed", + "cuy- Square": "Shapesanity Stitched Mixed", + "cuy- Star": "Shapesanity Stitched Mixed", + "cuy- Windmill": "Shapesanity Stitched Mixed", + "cwy- Circle": "Shapesanity Stitched Mixed", + "cwy- Square": "Shapesanity Stitched Mixed", + "cwy- Star": "Shapesanity Stitched Mixed", + "cwy- Windmill": "Shapesanity Stitched Mixed", + "gpru Circle": "Shapesanity Colorful Full Mixed", + "gpru Square": "Shapesanity Colorful Full Mixed", + "gpru Star": "Shapesanity Colorful Full Mixed", + "gpru Windmill": "Shapesanity Colorful East Windmill Mixed", + "gprw Circle": "Shapesanity Colorful Full Mixed", + "gprw Square": "Shapesanity Colorful Full Mixed", + "gprw Star": "Shapesanity Colorful Full Mixed", + "gprw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpry Circle": "Shapesanity Colorful Full Mixed", + "gpry Square": "Shapesanity Colorful Full Mixed", + "gpry Star": "Shapesanity Colorful Full Mixed", + "gpry Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpr- Circle": "Shapesanity Stitched Mixed", + "gpr- Square": "Shapesanity Stitched Mixed", + "gpr- Star": "Shapesanity Stitched Mixed", + "gpr- Windmill": "Shapesanity Stitched Mixed", + "gpuw Circle": "Shapesanity Colorful Full Mixed", + "gpuw Square": "Shapesanity Colorful Full Mixed", + "gpuw Star": "Shapesanity Colorful Full Mixed", + "gpuw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpuy Circle": "Shapesanity Colorful Full Mixed", + "gpuy Square": "Shapesanity Colorful Full Mixed", + "gpuy Star": "Shapesanity Colorful Full Mixed", + "gpuy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpu- Circle": "Shapesanity Stitched Mixed", + "gpu- Square": "Shapesanity Stitched Mixed", + "gpu- Star": "Shapesanity Stitched Mixed", + "gpu- Windmill": "Shapesanity Stitched Mixed", + "gpwy Circle": "Shapesanity Colorful Full Mixed", + "gpwy Square": "Shapesanity Colorful Full Mixed", + "gpwy Star": "Shapesanity Colorful Full Mixed", + "gpwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gpw- Circle": "Shapesanity Stitched Mixed", + "gpw- Square": "Shapesanity Stitched Mixed", + "gpw- Star": "Shapesanity Stitched Mixed", + "gpw- Windmill": "Shapesanity Stitched Mixed", + "gpy- Circle": "Shapesanity Stitched Mixed", + "gpy- Square": "Shapesanity Stitched Mixed", + "gpy- Star": "Shapesanity Stitched Mixed", + "gpy- Windmill": "Shapesanity Stitched Mixed", + "gruw Circle": "Shapesanity Colorful Full Mixed", + "gruw Square": "Shapesanity Colorful Full Mixed", + "gruw Star": "Shapesanity Colorful Full Mixed", + "gruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "gruy Circle": "Shapesanity Colorful Full Mixed", + "gruy Square": "Shapesanity Colorful Full Mixed", + "gruy Star": "Shapesanity Colorful Full Mixed", + "gruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "gru- Circle": "Shapesanity Stitched Painted", + "gru- Square": "Shapesanity Stitched Painted", + "gru- Star": "Shapesanity Stitched Painted", + "gru- Windmill": "Shapesanity Stitched Painted", + "grwy Circle": "Shapesanity Colorful Full Mixed", + "grwy Square": "Shapesanity Colorful Full Mixed", + "grwy Star": "Shapesanity Colorful Full Mixed", + "grwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "grw- Circle": "Shapesanity Stitched Mixed", + "grw- Square": "Shapesanity Stitched Mixed", + "grw- Star": "Shapesanity Stitched Mixed", + "grw- Windmill": "Shapesanity Stitched Mixed", + "gry- Circle": "Shapesanity Stitched Mixed", + "gry- Square": "Shapesanity Stitched Mixed", + "gry- Star": "Shapesanity Stitched Mixed", + "gry- Windmill": "Shapesanity Stitched Mixed", + "guwy Circle": "Shapesanity Colorful Full Mixed", + "guwy Square": "Shapesanity Colorful Full Mixed", + "guwy Star": "Shapesanity Colorful Full Mixed", + "guwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "guw- Circle": "Shapesanity Stitched Mixed", + "guw- Square": "Shapesanity Stitched Mixed", + "guw- Star": "Shapesanity Stitched Mixed", + "guw- Windmill": "Shapesanity Stitched Mixed", + "guy- Circle": "Shapesanity Stitched Mixed", + "guy- Square": "Shapesanity Stitched Mixed", + "guy- Star": "Shapesanity Stitched Mixed", + "guy- Windmill": "Shapesanity Stitched Mixed", + "gwy- Circle": "Shapesanity Stitched Mixed", + "gwy- Square": "Shapesanity Stitched Mixed", + "gwy- Star": "Shapesanity Stitched Mixed", + "gwy- Windmill": "Shapesanity Stitched Mixed", + "pruw Circle": "Shapesanity Colorful Full Mixed", + "pruw Square": "Shapesanity Colorful Full Mixed", + "pruw Star": "Shapesanity Colorful Full Mixed", + "pruw Windmill": "Shapesanity Colorful East Windmill Mixed", + "pruy Circle": "Shapesanity Colorful Full Mixed", + "pruy Square": "Shapesanity Colorful Full Mixed", + "pruy Star": "Shapesanity Colorful Full Mixed", + "pruy Windmill": "Shapesanity Colorful East Windmill Mixed", + "pru- Circle": "Shapesanity Stitched Mixed", + "pru- Square": "Shapesanity Stitched Mixed", + "pru- Star": "Shapesanity Stitched Mixed", + "pru- Windmill": "Shapesanity Stitched Mixed", + "prwy Circle": "Shapesanity Colorful Full Mixed", + "prwy Square": "Shapesanity Colorful Full Mixed", + "prwy Star": "Shapesanity Colorful Full Mixed", + "prwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "prw- Circle": "Shapesanity Stitched Mixed", + "prw- Square": "Shapesanity Stitched Mixed", + "prw- Star": "Shapesanity Stitched Mixed", + "prw- Windmill": "Shapesanity Stitched Mixed", + "pry- Circle": "Shapesanity Stitched Mixed", + "pry- Square": "Shapesanity Stitched Mixed", + "pry- Star": "Shapesanity Stitched Mixed", + "pry- Windmill": "Shapesanity Stitched Mixed", + "puwy Circle": "Shapesanity Colorful Full Mixed", + "puwy Square": "Shapesanity Colorful Full Mixed", + "puwy Star": "Shapesanity Colorful Full Mixed", + "puwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "puw- Circle": "Shapesanity Stitched Mixed", + "puw- Square": "Shapesanity Stitched Mixed", + "puw- Star": "Shapesanity Stitched Mixed", + "puw- Windmill": "Shapesanity Stitched Mixed", + "puy- Circle": "Shapesanity Stitched Mixed", + "puy- Square": "Shapesanity Stitched Mixed", + "puy- Star": "Shapesanity Stitched Mixed", + "puy- Windmill": "Shapesanity Stitched Mixed", + "pwy- Circle": "Shapesanity Stitched Mixed", + "pwy- Square": "Shapesanity Stitched Mixed", + "pwy- Star": "Shapesanity Stitched Mixed", + "pwy- Windmill": "Shapesanity Stitched Mixed", + "ruwy Circle": "Shapesanity Colorful Full Mixed", + "ruwy Square": "Shapesanity Colorful Full Mixed", + "ruwy Star": "Shapesanity Colorful Full Mixed", + "ruwy Windmill": "Shapesanity Colorful East Windmill Mixed", + "ruw- Circle": "Shapesanity Stitched Mixed", + "ruw- Square": "Shapesanity Stitched Mixed", + "ruw- Star": "Shapesanity Stitched Mixed", + "ruw- Windmill": "Shapesanity Stitched Mixed", + "ruy- Circle": "Shapesanity Stitched Mixed", + "ruy- Square": "Shapesanity Stitched Mixed", + "ruy- Star": "Shapesanity Stitched Mixed", + "ruy- Windmill": "Shapesanity Stitched Mixed", + "rwy- Circle": "Shapesanity Stitched Mixed", + "rwy- Square": "Shapesanity Stitched Mixed", + "rwy- Star": "Shapesanity Stitched Mixed", + "rwy- Windmill": "Shapesanity Stitched Mixed", + "uwy- Circle": "Shapesanity Stitched Mixed", + "uwy- Square": "Shapesanity Stitched Mixed", + "uwy- Star": "Shapesanity Stitched Mixed", + "uwy- Windmill": "Shapesanity Stitched Mixed", + "Red CRSW": "Shapesanity Stitched Painted", + "Blue CRSW": "Shapesanity Stitched Painted", + "Green CRSW": "Shapesanity Stitched Painted", + "Yellow CRSW": "Shapesanity Stitched Mixed", + "Purple CRSW": "Shapesanity Stitched Mixed", + "Cyan CRSW": "Shapesanity Stitched Mixed", + "White CRSW": "Shapesanity Stitched Mixed", + "Uncolored CRSW": "Shapesanity Stitched Uncolored", + "Red CRS-": "Shapesanity Stitched Painted", + "Blue CRS-": "Shapesanity Stitched Painted", + "Green CRS-": "Shapesanity Stitched Painted", + "Yellow CRS-": "Shapesanity Stitched Mixed", + "Purple CRS-": "Shapesanity Stitched Mixed", + "Cyan CRS-": "Shapesanity Stitched Mixed", + "White CRS-": "Shapesanity Stitched Mixed", + "Uncolored CRS-": "Shapesanity Stitched Uncolored", + "Red CRW-": "Shapesanity Stitched Painted", + "Blue CRW-": "Shapesanity Stitched Painted", + "Green CRW-": "Shapesanity Stitched Painted", + "Yellow CRW-": "Shapesanity Stitched Mixed", + "Purple CRW-": "Shapesanity Stitched Mixed", + "Cyan CRW-": "Shapesanity Stitched Mixed", + "White CRW-": "Shapesanity Stitched Mixed", + "Uncolored CRW-": "Shapesanity Stitched Uncolored", + "Red CSW-": "Shapesanity Stitched Painted", + "Blue CSW-": "Shapesanity Stitched Painted", + "Green CSW-": "Shapesanity Stitched Painted", + "Yellow CSW-": "Shapesanity Stitched Mixed", + "Purple CSW-": "Shapesanity Stitched Mixed", + "Cyan CSW-": "Shapesanity Stitched Mixed", + "White CSW-": "Shapesanity Stitched Mixed", + "Uncolored CSW-": "Shapesanity Stitched Uncolored", + "Red RSW-": "Shapesanity Stitched Painted", + "Blue RSW-": "Shapesanity Stitched Painted", + "Green RSW-": "Shapesanity Stitched Painted", + "Yellow RSW-": "Shapesanity Stitched Mixed", + "Purple RSW-": "Shapesanity Stitched Mixed", + "Cyan RSW-": "Shapesanity Stitched Mixed", + "White RSW-": "Shapesanity Stitched Mixed", + "Uncolored RSW-": "Shapesanity Stitched Uncolored", +} + +shapesanity_two_sided = { + "3-1 Cb Cc": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cc": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cc": "Shapesanity Stitched Mixed", + "3-1 Cb Cg": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cg": "Shapesanity Colorful Full Painted", + "Checkered Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cg": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cg": "Shapesanity Stitched Painted", + "3-1 Cb Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cp": "Shapesanity Stitched Mixed", + "3-1 Cb Cr": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cr": "Shapesanity Colorful Full Painted", + "Checkered Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cr": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cr": "Shapesanity Stitched Painted", + "3-1 Cb Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cb Cu": "Shapesanity Colorful Full Painted", + "Checkered Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cb Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Cu": "Shapesanity Stitched Painted", + "3-1 Cb Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cw": "Shapesanity Stitched Mixed", + "3-1 Cb Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cb Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cb Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Cy": "Shapesanity Stitched Mixed", + "3-1 Cb Rb": "Shapesanity Stitched Painted", + "Half-Half Cb Rb": "Shapesanity Half-Half Painted", + "Checkered Cb Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rb": "Shapesanity Stitched Painted", + "3-1 Cb Rc": "Shapesanity Stitched Mixed", + "Half-Half Cb Rc": "Shapesanity Half-Half Mixed", + "Checkered Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rc": "Shapesanity Stitched Mixed", + "3-1 Cb Rg": "Shapesanity Stitched Painted", + "Half-Half Cb Rg": "Shapesanity Half-Half Painted", + "Checkered Cb Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rg": "Shapesanity Stitched Painted", + "3-1 Cb Rp": "Shapesanity Stitched Mixed", + "Half-Half Cb Rp": "Shapesanity Half-Half Mixed", + "Checkered Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rp": "Shapesanity Stitched Mixed", + "3-1 Cb Rr": "Shapesanity Stitched Painted", + "Half-Half Cb Rr": "Shapesanity Half-Half Painted", + "Checkered Cb Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Rr": "Shapesanity Stitched Painted", + "3-1 Cb Ru": "Shapesanity Stitched Painted", + "Half-Half Cb Ru": "Shapesanity Half-Half Painted", + "Checkered Cb Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Ru": "Shapesanity Stitched Painted", + "3-1 Cb Rw": "Shapesanity Stitched Mixed", + "Half-Half Cb Rw": "Shapesanity Half-Half Mixed", + "Checkered Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Rw": "Shapesanity Stitched Mixed", + "3-1 Cb Ry": "Shapesanity Stitched Mixed", + "Half-Half Cb Ry": "Shapesanity Half-Half Mixed", + "Checkered Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Ry": "Shapesanity Stitched Mixed", + "3-1 Cb Sb": "Shapesanity Stitched Painted", + "Half-Half Cb Sb": "Shapesanity Half-Half Painted", + "Checkered Cb Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sb": "Shapesanity Stitched Painted", + "3-1 Cb Sc": "Shapesanity Stitched Mixed", + "Half-Half Cb Sc": "Shapesanity Half-Half Mixed", + "Checkered Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sc": "Shapesanity Stitched Mixed", + "3-1 Cb Sg": "Shapesanity Stitched Painted", + "Half-Half Cb Sg": "Shapesanity Half-Half Painted", + "Checkered Cb Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sg": "Shapesanity Stitched Painted", + "3-1 Cb Sp": "Shapesanity Stitched Mixed", + "Half-Half Cb Sp": "Shapesanity Half-Half Mixed", + "Checkered Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sp": "Shapesanity Stitched Mixed", + "3-1 Cb Sr": "Shapesanity Stitched Painted", + "Half-Half Cb Sr": "Shapesanity Half-Half Painted", + "Checkered Cb Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Sr": "Shapesanity Stitched Painted", + "3-1 Cb Su": "Shapesanity Stitched Painted", + "Half-Half Cb Su": "Shapesanity Half-Half Painted", + "Checkered Cb Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Su": "Shapesanity Stitched Painted", + "Cornered Singles Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Su": "Shapesanity Stitched Painted", + "3-1 Cb Sw": "Shapesanity Stitched Mixed", + "Half-Half Cb Sw": "Shapesanity Half-Half Mixed", + "Checkered Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sw": "Shapesanity Stitched Mixed", + "3-1 Cb Sy": "Shapesanity Stitched Mixed", + "Half-Half Cb Sy": "Shapesanity Half-Half Mixed", + "Checkered Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Sy": "Shapesanity Stitched Mixed", + "3-1 Cb Wb": "Shapesanity Stitched Painted", + "Half-Half Cb Wb": "Shapesanity Half-Half Painted", + "Checkered Cb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wb": "Shapesanity Stitched Painted", + "3-1 Cb Wc": "Shapesanity Stitched Mixed", + "Half-Half Cb Wc": "Shapesanity Half-Half Mixed", + "Checkered Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wc": "Shapesanity Stitched Mixed", + "3-1 Cb Wg": "Shapesanity Stitched Painted", + "Half-Half Cb Wg": "Shapesanity Half-Half Painted", + "Checkered Cb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wg": "Shapesanity Stitched Painted", + "3-1 Cb Wp": "Shapesanity Stitched Mixed", + "Half-Half Cb Wp": "Shapesanity Half-Half Mixed", + "Checkered Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wp": "Shapesanity Stitched Mixed", + "3-1 Cb Wr": "Shapesanity Stitched Painted", + "Half-Half Cb Wr": "Shapesanity Half-Half Painted", + "Checkered Cb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wr": "Shapesanity Stitched Painted", + "3-1 Cb Wu": "Shapesanity Stitched Painted", + "Half-Half Cb Wu": "Shapesanity Half-Half Painted", + "Checkered Cb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cb Wu": "Shapesanity Stitched Painted", + "3-1 Cb Ww": "Shapesanity Stitched Mixed", + "Half-Half Cb Ww": "Shapesanity Half-Half Mixed", + "Checkered Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Ww": "Shapesanity Stitched Mixed", + "3-1 Cb Wy": "Shapesanity Stitched Mixed", + "Half-Half Cb Wy": "Shapesanity Half-Half Mixed", + "Checkered Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cb Wy": "Shapesanity Stitched Mixed", + "3-1 Cc Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cb": "Shapesanity Stitched Mixed", + "3-1 Cc Cg": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cg": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cg": "Shapesanity Stitched Mixed", + "3-1 Cc Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cp": "Shapesanity Stitched Mixed", + "3-1 Cc Cr": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cr": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cr": "Shapesanity Stitched Mixed", + "3-1 Cc Cu": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cu": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cu": "Shapesanity Stitched Mixed", + "3-1 Cc Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cw": "Shapesanity Stitched Mixed", + "3-1 Cc Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cc Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cc Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Cy": "Shapesanity Stitched Mixed", + "3-1 Cc Rb": "Shapesanity Stitched Mixed", + "Half-Half Cc Rb": "Shapesanity Half-Half Mixed", + "Checkered Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rb": "Shapesanity Stitched Mixed", + "3-1 Cc Rc": "Shapesanity Stitched Mixed", + "Half-Half Cc Rc": "Shapesanity Half-Half Mixed", + "Checkered Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rc": "Shapesanity Stitched Mixed", + "3-1 Cc Rg": "Shapesanity Stitched Mixed", + "Half-Half Cc Rg": "Shapesanity Half-Half Mixed", + "Checkered Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rg": "Shapesanity Stitched Mixed", + "3-1 Cc Rp": "Shapesanity Stitched Mixed", + "Half-Half Cc Rp": "Shapesanity Half-Half Mixed", + "Checkered Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rp": "Shapesanity Stitched Mixed", + "3-1 Cc Rr": "Shapesanity Stitched Mixed", + "Half-Half Cc Rr": "Shapesanity Half-Half Mixed", + "Checkered Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rr": "Shapesanity Stitched Mixed", + "3-1 Cc Ru": "Shapesanity Stitched Mixed", + "Half-Half Cc Ru": "Shapesanity Half-Half Mixed", + "Checkered Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ru": "Shapesanity Stitched Mixed", + "3-1 Cc Rw": "Shapesanity Stitched Mixed", + "Half-Half Cc Rw": "Shapesanity Half-Half Mixed", + "Checkered Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Rw": "Shapesanity Stitched Mixed", + "3-1 Cc Ry": "Shapesanity Stitched Mixed", + "Half-Half Cc Ry": "Shapesanity Half-Half Mixed", + "Checkered Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ry": "Shapesanity Stitched Mixed", + "3-1 Cc Sb": "Shapesanity Stitched Mixed", + "Half-Half Cc Sb": "Shapesanity Half-Half Mixed", + "Checkered Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sb": "Shapesanity Stitched Mixed", + "3-1 Cc Sc": "Shapesanity Stitched Mixed", + "Half-Half Cc Sc": "Shapesanity Half-Half Mixed", + "Checkered Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sc": "Shapesanity Stitched Mixed", + "3-1 Cc Sg": "Shapesanity Stitched Mixed", + "Half-Half Cc Sg": "Shapesanity Half-Half Mixed", + "Checkered Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sg": "Shapesanity Stitched Mixed", + "3-1 Cc Sp": "Shapesanity Stitched Mixed", + "Half-Half Cc Sp": "Shapesanity Half-Half Mixed", + "Checkered Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sp": "Shapesanity Stitched Mixed", + "3-1 Cc Sr": "Shapesanity Stitched Mixed", + "Half-Half Cc Sr": "Shapesanity Half-Half Mixed", + "Checkered Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sr": "Shapesanity Stitched Mixed", + "3-1 Cc Su": "Shapesanity Stitched Mixed", + "Half-Half Cc Su": "Shapesanity Half-Half Mixed", + "Checkered Cc Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Su": "Shapesanity Stitched Mixed", + "3-1 Cc Sw": "Shapesanity Stitched Mixed", + "Half-Half Cc Sw": "Shapesanity Half-Half Mixed", + "Checkered Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sw": "Shapesanity Stitched Mixed", + "3-1 Cc Sy": "Shapesanity Stitched Mixed", + "Half-Half Cc Sy": "Shapesanity Half-Half Mixed", + "Checkered Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Sy": "Shapesanity Stitched Mixed", + "3-1 Cc Wb": "Shapesanity Stitched Mixed", + "Half-Half Cc Wb": "Shapesanity Half-Half Mixed", + "Checkered Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wb": "Shapesanity Stitched Mixed", + "3-1 Cc Wc": "Shapesanity Stitched Mixed", + "Half-Half Cc Wc": "Shapesanity Half-Half Mixed", + "Checkered Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wc": "Shapesanity Stitched Mixed", + "3-1 Cc Wg": "Shapesanity Stitched Mixed", + "Half-Half Cc Wg": "Shapesanity Half-Half Mixed", + "Checkered Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wg": "Shapesanity Stitched Mixed", + "3-1 Cc Wp": "Shapesanity Stitched Mixed", + "Half-Half Cc Wp": "Shapesanity Half-Half Mixed", + "Checkered Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wp": "Shapesanity Stitched Mixed", + "3-1 Cc Wr": "Shapesanity Stitched Mixed", + "Half-Half Cc Wr": "Shapesanity Half-Half Mixed", + "Checkered Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wr": "Shapesanity Stitched Mixed", + "3-1 Cc Wu": "Shapesanity Stitched Mixed", + "Half-Half Cc Wu": "Shapesanity Half-Half Mixed", + "Checkered Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wu": "Shapesanity Stitched Mixed", + "3-1 Cc Ww": "Shapesanity Stitched Mixed", + "Half-Half Cc Ww": "Shapesanity Half-Half Mixed", + "Checkered Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Ww": "Shapesanity Stitched Mixed", + "3-1 Cc Wy": "Shapesanity Stitched Mixed", + "Half-Half Cc Wy": "Shapesanity Half-Half Mixed", + "Checkered Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cc Wy": "Shapesanity Stitched Mixed", + "3-1 Cg Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cb": "Shapesanity Stitched Painted", + "3-1 Cg Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cc": "Shapesanity Stitched Mixed", + "3-1 Cg Cp": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cp": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cp": "Shapesanity Stitched Mixed", + "3-1 Cg Cr": "Shapesanity Colorful Full Painted", + "Half-Half Cg Cr": "Shapesanity Colorful Full Painted", + "Checkered Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cg Cr": "Shapesanity Colorful Half Painted", + "Cornered Singles Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cr": "Shapesanity Stitched Painted", + "3-1 Cg Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cg Cu": "Shapesanity Colorful Full Painted", + "Checkered Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cg Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Cu": "Shapesanity Stitched Painted", + "3-1 Cg Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cw": "Shapesanity Stitched Mixed", + "3-1 Cg Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cg Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cg Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Cy": "Shapesanity Stitched Mixed", + "3-1 Cg Rb": "Shapesanity Stitched Painted", + "Half-Half Cg Rb": "Shapesanity Half-Half Painted", + "Checkered Cg Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rb": "Shapesanity Stitched Painted", + "3-1 Cg Rc": "Shapesanity Stitched Mixed", + "Half-Half Cg Rc": "Shapesanity Half-Half Mixed", + "Checkered Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rc": "Shapesanity Stitched Mixed", + "3-1 Cg Rg": "Shapesanity Stitched Painted", + "Half-Half Cg Rg": "Shapesanity Half-Half Painted", + "Checkered Cg Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rg": "Shapesanity Stitched Painted", + "3-1 Cg Rp": "Shapesanity Stitched Mixed", + "Half-Half Cg Rp": "Shapesanity Half-Half Mixed", + "Checkered Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rp": "Shapesanity Stitched Mixed", + "3-1 Cg Rr": "Shapesanity Stitched Painted", + "Half-Half Cg Rr": "Shapesanity Half-Half Painted", + "Checkered Cg Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Rr": "Shapesanity Stitched Painted", + "3-1 Cg Ru": "Shapesanity Stitched Painted", + "Half-Half Cg Ru": "Shapesanity Half-Half Painted", + "Checkered Cg Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Ru": "Shapesanity Stitched Painted", + "3-1 Cg Rw": "Shapesanity Stitched Mixed", + "Half-Half Cg Rw": "Shapesanity Half-Half Mixed", + "Checkered Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Rw": "Shapesanity Stitched Mixed", + "3-1 Cg Ry": "Shapesanity Stitched Mixed", + "Half-Half Cg Ry": "Shapesanity Half-Half Mixed", + "Checkered Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Ry": "Shapesanity Stitched Mixed", + "3-1 Cg Sb": "Shapesanity Stitched Painted", + "Half-Half Cg Sb": "Shapesanity Half-Half Painted", + "Checkered Cg Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sb": "Shapesanity Stitched Painted", + "3-1 Cg Sc": "Shapesanity Stitched Mixed", + "Half-Half Cg Sc": "Shapesanity Half-Half Mixed", + "Checkered Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sc": "Shapesanity Stitched Mixed", + "3-1 Cg Sg": "Shapesanity Stitched Painted", + "Half-Half Cg Sg": "Shapesanity Half-Half Painted", + "Checkered Cg Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sg": "Shapesanity Stitched Painted", + "3-1 Cg Sp": "Shapesanity Stitched Mixed", + "Half-Half Cg Sp": "Shapesanity Half-Half Mixed", + "Checkered Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sp": "Shapesanity Stitched Mixed", + "3-1 Cg Sr": "Shapesanity Stitched Painted", + "Half-Half Cg Sr": "Shapesanity Half-Half Painted", + "Checkered Cg Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Sr": "Shapesanity Stitched Painted", + "3-1 Cg Su": "Shapesanity Stitched Painted", + "Half-Half Cg Su": "Shapesanity Half-Half Painted", + "Checkered Cg Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Su": "Shapesanity Stitched Painted", + "Cornered Singles Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Su": "Shapesanity Stitched Painted", + "3-1 Cg Sw": "Shapesanity Stitched Mixed", + "Half-Half Cg Sw": "Shapesanity Half-Half Mixed", + "Checkered Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sw": "Shapesanity Stitched Mixed", + "3-1 Cg Sy": "Shapesanity Stitched Mixed", + "Half-Half Cg Sy": "Shapesanity Half-Half Mixed", + "Checkered Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Sy": "Shapesanity Stitched Mixed", + "3-1 Cg Wb": "Shapesanity Stitched Painted", + "Half-Half Cg Wb": "Shapesanity Half-Half Painted", + "Checkered Cg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wb": "Shapesanity Stitched Painted", + "3-1 Cg Wc": "Shapesanity Stitched Mixed", + "Half-Half Cg Wc": "Shapesanity Half-Half Mixed", + "Checkered Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wc": "Shapesanity Stitched Mixed", + "3-1 Cg Wg": "Shapesanity Stitched Painted", + "Half-Half Cg Wg": "Shapesanity Half-Half Painted", + "Checkered Cg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wg": "Shapesanity Stitched Painted", + "3-1 Cg Wp": "Shapesanity Stitched Mixed", + "Half-Half Cg Wp": "Shapesanity Half-Half Mixed", + "Checkered Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wp": "Shapesanity Stitched Mixed", + "3-1 Cg Wr": "Shapesanity Stitched Painted", + "Half-Half Cg Wr": "Shapesanity Half-Half Painted", + "Checkered Cg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wr": "Shapesanity Stitched Painted", + "3-1 Cg Wu": "Shapesanity Stitched Painted", + "Half-Half Cg Wu": "Shapesanity Half-Half Painted", + "Checkered Cg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cg Wu": "Shapesanity Stitched Painted", + "3-1 Cg Ww": "Shapesanity Stitched Mixed", + "Half-Half Cg Ww": "Shapesanity Half-Half Mixed", + "Checkered Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Ww": "Shapesanity Stitched Mixed", + "3-1 Cg Wy": "Shapesanity Stitched Mixed", + "Half-Half Cg Wy": "Shapesanity Half-Half Mixed", + "Checkered Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cg Wy": "Shapesanity Stitched Mixed", + "3-1 Cp Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cb": "Shapesanity Stitched Mixed", + "3-1 Cp Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cc": "Shapesanity Stitched Mixed", + "3-1 Cp Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cg": "Shapesanity Stitched Mixed", + "3-1 Cp Cr": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cr": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cr": "Shapesanity Stitched Mixed", + "3-1 Cp Cu": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cu": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cu": "Shapesanity Stitched Mixed", + "3-1 Cp Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cw": "Shapesanity Stitched Mixed", + "3-1 Cp Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cp Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cp Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Cy": "Shapesanity Stitched Mixed", + "3-1 Cp Rb": "Shapesanity Stitched Mixed", + "Half-Half Cp Rb": "Shapesanity Half-Half Mixed", + "Checkered Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rb": "Shapesanity Stitched Mixed", + "3-1 Cp Rc": "Shapesanity Stitched Mixed", + "Half-Half Cp Rc": "Shapesanity Half-Half Mixed", + "Checkered Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rc": "Shapesanity Stitched Mixed", + "3-1 Cp Rg": "Shapesanity Stitched Mixed", + "Half-Half Cp Rg": "Shapesanity Half-Half Mixed", + "Checkered Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rg": "Shapesanity Stitched Mixed", + "3-1 Cp Rp": "Shapesanity Stitched Mixed", + "Half-Half Cp Rp": "Shapesanity Half-Half Mixed", + "Checkered Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rp": "Shapesanity Stitched Mixed", + "3-1 Cp Rr": "Shapesanity Stitched Mixed", + "Half-Half Cp Rr": "Shapesanity Half-Half Mixed", + "Checkered Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rr": "Shapesanity Stitched Mixed", + "3-1 Cp Ru": "Shapesanity Stitched Mixed", + "Half-Half Cp Ru": "Shapesanity Half-Half Mixed", + "Checkered Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ru": "Shapesanity Stitched Mixed", + "3-1 Cp Rw": "Shapesanity Stitched Mixed", + "Half-Half Cp Rw": "Shapesanity Half-Half Mixed", + "Checkered Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Rw": "Shapesanity Stitched Mixed", + "3-1 Cp Ry": "Shapesanity Stitched Mixed", + "Half-Half Cp Ry": "Shapesanity Half-Half Mixed", + "Checkered Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ry": "Shapesanity Stitched Mixed", + "3-1 Cp Sb": "Shapesanity Stitched Mixed", + "Half-Half Cp Sb": "Shapesanity Half-Half Mixed", + "Checkered Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sb": "Shapesanity Stitched Mixed", + "3-1 Cp Sc": "Shapesanity Stitched Mixed", + "Half-Half Cp Sc": "Shapesanity Half-Half Mixed", + "Checkered Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sc": "Shapesanity Stitched Mixed", + "3-1 Cp Sg": "Shapesanity Stitched Mixed", + "Half-Half Cp Sg": "Shapesanity Half-Half Mixed", + "Checkered Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sg": "Shapesanity Stitched Mixed", + "3-1 Cp Sp": "Shapesanity Stitched Mixed", + "Half-Half Cp Sp": "Shapesanity Half-Half Mixed", + "Checkered Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sp": "Shapesanity Stitched Mixed", + "3-1 Cp Sr": "Shapesanity Stitched Mixed", + "Half-Half Cp Sr": "Shapesanity Half-Half Mixed", + "Checkered Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sr": "Shapesanity Stitched Mixed", + "3-1 Cp Su": "Shapesanity Stitched Mixed", + "Half-Half Cp Su": "Shapesanity Half-Half Mixed", + "Checkered Cp Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Su": "Shapesanity Stitched Mixed", + "3-1 Cp Sw": "Shapesanity Stitched Mixed", + "Half-Half Cp Sw": "Shapesanity Half-Half Mixed", + "Checkered Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sw": "Shapesanity Stitched Mixed", + "3-1 Cp Sy": "Shapesanity Stitched Mixed", + "Half-Half Cp Sy": "Shapesanity Half-Half Mixed", + "Checkered Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Sy": "Shapesanity Stitched Mixed", + "3-1 Cp Wb": "Shapesanity Stitched Mixed", + "Half-Half Cp Wb": "Shapesanity Half-Half Mixed", + "Checkered Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wb": "Shapesanity Stitched Mixed", + "3-1 Cp Wc": "Shapesanity Stitched Mixed", + "Half-Half Cp Wc": "Shapesanity Half-Half Mixed", + "Checkered Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wc": "Shapesanity Stitched Mixed", + "3-1 Cp Wg": "Shapesanity Stitched Mixed", + "Half-Half Cp Wg": "Shapesanity Half-Half Mixed", + "Checkered Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wg": "Shapesanity Stitched Mixed", + "3-1 Cp Wp": "Shapesanity Stitched Mixed", + "Half-Half Cp Wp": "Shapesanity Half-Half Mixed", + "Checkered Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wp": "Shapesanity Stitched Mixed", + "3-1 Cp Wr": "Shapesanity Stitched Mixed", + "Half-Half Cp Wr": "Shapesanity Half-Half Mixed", + "Checkered Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wr": "Shapesanity Stitched Mixed", + "3-1 Cp Wu": "Shapesanity Stitched Mixed", + "Half-Half Cp Wu": "Shapesanity Half-Half Mixed", + "Checkered Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wu": "Shapesanity Stitched Mixed", + "3-1 Cp Ww": "Shapesanity Stitched Mixed", + "Half-Half Cp Ww": "Shapesanity Half-Half Mixed", + "Checkered Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Ww": "Shapesanity Stitched Mixed", + "3-1 Cp Wy": "Shapesanity Stitched Mixed", + "Half-Half Cp Wy": "Shapesanity Half-Half Mixed", + "Checkered Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cp Wy": "Shapesanity Stitched Mixed", + "3-1 Cr Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cb": "Shapesanity Stitched Painted", + "3-1 Cr Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cc": "Shapesanity Stitched Mixed", + "3-1 Cr Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cg": "Shapesanity Stitched Painted", + "3-1 Cr Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cp": "Shapesanity Stitched Mixed", + "3-1 Cr Cu": "Shapesanity Colorful Full Painted", + "Half-Half Cr Cu": "Shapesanity Colorful Full Painted", + "Checkered Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent Singles Cr Cu": "Shapesanity Colorful Half Painted", + "Cornered Singles Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Cu": "Shapesanity Stitched Painted", + "3-1 Cr Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cr Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cr Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cw": "Shapesanity Stitched Mixed", + "3-1 Cr Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cr Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cr Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Cy": "Shapesanity Stitched Mixed", + "3-1 Cr Rb": "Shapesanity Stitched Painted", + "Half-Half Cr Rb": "Shapesanity Half-Half Painted", + "Checkered Cr Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rb": "Shapesanity Stitched Painted", + "3-1 Cr Rc": "Shapesanity Stitched Mixed", + "Half-Half Cr Rc": "Shapesanity Half-Half Mixed", + "Checkered Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rc": "Shapesanity Stitched Mixed", + "3-1 Cr Rg": "Shapesanity Stitched Painted", + "Half-Half Cr Rg": "Shapesanity Half-Half Painted", + "Checkered Cr Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rg": "Shapesanity Stitched Painted", + "3-1 Cr Rp": "Shapesanity Stitched Mixed", + "Half-Half Cr Rp": "Shapesanity Half-Half Mixed", + "Checkered Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rp": "Shapesanity Stitched Mixed", + "3-1 Cr Rr": "Shapesanity Stitched Painted", + "Half-Half Cr Rr": "Shapesanity Half-Half Painted", + "Checkered Cr Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Rr": "Shapesanity Stitched Painted", + "3-1 Cr Ru": "Shapesanity Stitched Painted", + "Half-Half Cr Ru": "Shapesanity Half-Half Painted", + "Checkered Cr Ru": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Ru": "Shapesanity Stitched Painted", + "Cornered Singles Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Ru": "Shapesanity Stitched Painted", + "3-1 Cr Rw": "Shapesanity Stitched Mixed", + "Half-Half Cr Rw": "Shapesanity Half-Half Mixed", + "Checkered Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Rw": "Shapesanity Stitched Mixed", + "3-1 Cr Ry": "Shapesanity Stitched Mixed", + "Half-Half Cr Ry": "Shapesanity Half-Half Mixed", + "Checkered Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Ry": "Shapesanity Stitched Mixed", + "3-1 Cr Sb": "Shapesanity Stitched Painted", + "Half-Half Cr Sb": "Shapesanity Half-Half Painted", + "Checkered Cr Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sb": "Shapesanity Stitched Painted", + "3-1 Cr Sc": "Shapesanity Stitched Mixed", + "Half-Half Cr Sc": "Shapesanity Half-Half Mixed", + "Checkered Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sc": "Shapesanity Stitched Mixed", + "3-1 Cr Sg": "Shapesanity Stitched Painted", + "Half-Half Cr Sg": "Shapesanity Half-Half Painted", + "Checkered Cr Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sg": "Shapesanity Stitched Painted", + "3-1 Cr Sp": "Shapesanity Stitched Mixed", + "Half-Half Cr Sp": "Shapesanity Half-Half Mixed", + "Checkered Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sp": "Shapesanity Stitched Mixed", + "3-1 Cr Sr": "Shapesanity Stitched Painted", + "Half-Half Cr Sr": "Shapesanity Half-Half Painted", + "Checkered Cr Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Sr": "Shapesanity Stitched Painted", + "3-1 Cr Su": "Shapesanity Stitched Painted", + "Half-Half Cr Su": "Shapesanity Half-Half Painted", + "Checkered Cr Su": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Su": "Shapesanity Stitched Painted", + "Cornered Singles Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Su": "Shapesanity Stitched Painted", + "3-1 Cr Sw": "Shapesanity Stitched Mixed", + "Half-Half Cr Sw": "Shapesanity Half-Half Mixed", + "Checkered Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sw": "Shapesanity Stitched Mixed", + "3-1 Cr Sy": "Shapesanity Stitched Mixed", + "Half-Half Cr Sy": "Shapesanity Half-Half Mixed", + "Checkered Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Sy": "Shapesanity Stitched Mixed", + "3-1 Cr Wb": "Shapesanity Stitched Painted", + "Half-Half Cr Wb": "Shapesanity Half-Half Painted", + "Checkered Cr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wb": "Shapesanity Stitched Painted", + "3-1 Cr Wc": "Shapesanity Stitched Mixed", + "Half-Half Cr Wc": "Shapesanity Half-Half Mixed", + "Checkered Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wc": "Shapesanity Stitched Mixed", + "3-1 Cr Wg": "Shapesanity Stitched Painted", + "Half-Half Cr Wg": "Shapesanity Half-Half Painted", + "Checkered Cr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wg": "Shapesanity Stitched Painted", + "3-1 Cr Wp": "Shapesanity Stitched Mixed", + "Half-Half Cr Wp": "Shapesanity Half-Half Mixed", + "Checkered Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wp": "Shapesanity Stitched Mixed", + "3-1 Cr Wr": "Shapesanity Stitched Painted", + "Half-Half Cr Wr": "Shapesanity Half-Half Painted", + "Checkered Cr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wr": "Shapesanity Stitched Painted", + "3-1 Cr Wu": "Shapesanity Stitched Painted", + "Half-Half Cr Wu": "Shapesanity Half-Half Painted", + "Checkered Cr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Cr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Cr Wu": "Shapesanity Stitched Painted", + "3-1 Cr Ww": "Shapesanity Stitched Mixed", + "Half-Half Cr Ww": "Shapesanity Half-Half Mixed", + "Checkered Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Ww": "Shapesanity Stitched Mixed", + "3-1 Cr Wy": "Shapesanity Stitched Mixed", + "Half-Half Cr Wy": "Shapesanity Half-Half Mixed", + "Checkered Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cr Wy": "Shapesanity Stitched Mixed", + "3-1 Cu Cb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cb": "Shapesanity Stitched Painted", + "3-1 Cu Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cu Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cc": "Shapesanity Stitched Mixed", + "3-1 Cu Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cg": "Shapesanity Stitched Painted", + "3-1 Cu Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cu Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cp": "Shapesanity Stitched Mixed", + "3-1 Cu Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Cu Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Cr": "Shapesanity Stitched Painted", + "3-1 Cu Cw": "Shapesanity Colorful Full Mixed", + "Half-Half Cu Cw": "Shapesanity Colorful Full Mixed", + "Checkered Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cu Cw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cw": "Shapesanity Stitched Mixed", + "3-1 Cu Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cu Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cu Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cu Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Cy": "Shapesanity Stitched Mixed", + "3-1 Cu Rb": "Shapesanity Stitched Painted", + "Half-Half Cu Rb": "Shapesanity Half-Half Painted", + "Checkered Cu Rb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rb": "Shapesanity Stitched Painted", + "3-1 Cu Rc": "Shapesanity Stitched Mixed", + "Half-Half Cu Rc": "Shapesanity Half-Half Mixed", + "Checkered Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rc": "Shapesanity Stitched Mixed", + "3-1 Cu Rg": "Shapesanity Stitched Painted", + "Half-Half Cu Rg": "Shapesanity Half-Half Painted", + "Checkered Cu Rg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rg": "Shapesanity Stitched Painted", + "3-1 Cu Rp": "Shapesanity Stitched Mixed", + "Half-Half Cu Rp": "Shapesanity Half-Half Mixed", + "Checkered Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rp": "Shapesanity Stitched Mixed", + "3-1 Cu Rr": "Shapesanity Stitched Painted", + "Half-Half Cu Rr": "Shapesanity Half-Half Painted", + "Checkered Cu Rr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Rr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Rr": "Shapesanity Stitched Painted", + "3-1 Cu Ru": "Shapesanity Stitched Uncolored", + "Half-Half Cu Ru": "Shapesanity Half-Half Uncolored", + "Checkered Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Ru": "Shapesanity Stitched Uncolored", + "3-1 Cu Rw": "Shapesanity Stitched Mixed", + "Half-Half Cu Rw": "Shapesanity Half-Half Mixed", + "Checkered Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Rw": "Shapesanity Stitched Mixed", + "3-1 Cu Ry": "Shapesanity Stitched Mixed", + "Half-Half Cu Ry": "Shapesanity Half-Half Mixed", + "Checkered Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Ry": "Shapesanity Stitched Mixed", + "3-1 Cu Sb": "Shapesanity Stitched Painted", + "Half-Half Cu Sb": "Shapesanity Half-Half Painted", + "Checkered Cu Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sb": "Shapesanity Stitched Painted", + "3-1 Cu Sc": "Shapesanity Stitched Mixed", + "Half-Half Cu Sc": "Shapesanity Half-Half Mixed", + "Checkered Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sc": "Shapesanity Stitched Mixed", + "3-1 Cu Sg": "Shapesanity Stitched Painted", + "Half-Half Cu Sg": "Shapesanity Half-Half Painted", + "Checkered Cu Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sg": "Shapesanity Stitched Painted", + "3-1 Cu Sp": "Shapesanity Stitched Mixed", + "Half-Half Cu Sp": "Shapesanity Half-Half Mixed", + "Checkered Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sp": "Shapesanity Stitched Mixed", + "3-1 Cu Sr": "Shapesanity Stitched Painted", + "Half-Half Cu Sr": "Shapesanity Half-Half Painted", + "Checkered Cu Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Sr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Sr": "Shapesanity Stitched Painted", + "3-1 Cu Su": "Shapesanity Stitched Uncolored", + "Half-Half Cu Su": "Shapesanity Half-Half Uncolored", + "Checkered Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Su": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Su": "Shapesanity Stitched Uncolored", + "3-1 Cu Sw": "Shapesanity Stitched Mixed", + "Half-Half Cu Sw": "Shapesanity Half-Half Mixed", + "Checkered Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sw": "Shapesanity Stitched Mixed", + "3-1 Cu Sy": "Shapesanity Stitched Mixed", + "Half-Half Cu Sy": "Shapesanity Half-Half Mixed", + "Checkered Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Sy": "Shapesanity Stitched Mixed", + "3-1 Cu Wb": "Shapesanity Stitched Painted", + "Half-Half Cu Wb": "Shapesanity Half-Half Painted", + "Checkered Cu Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wb": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wb": "Shapesanity Stitched Painted", + "3-1 Cu Wc": "Shapesanity Stitched Mixed", + "Half-Half Cu Wc": "Shapesanity Half-Half Mixed", + "Checkered Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wc": "Shapesanity Stitched Mixed", + "3-1 Cu Wg": "Shapesanity Stitched Painted", + "Half-Half Cu Wg": "Shapesanity Half-Half Painted", + "Checkered Cu Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wg": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wg": "Shapesanity Stitched Painted", + "3-1 Cu Wp": "Shapesanity Stitched Mixed", + "Half-Half Cu Wp": "Shapesanity Half-Half Mixed", + "Checkered Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wp": "Shapesanity Stitched Mixed", + "3-1 Cu Wr": "Shapesanity Stitched Painted", + "Half-Half Cu Wr": "Shapesanity Half-Half Painted", + "Checkered Cu Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Cu Wr": "Shapesanity Stitched Painted", + "Cornered Singles Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Cu Wr": "Shapesanity Stitched Painted", + "3-1 Cu Wu": "Shapesanity Stitched Uncolored", + "Half-Half Cu Wu": "Shapesanity Half-Half Uncolored", + "Checkered Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Cu Wu": "Shapesanity Stitched Uncolored", + "3-1 Cu Ww": "Shapesanity Stitched Mixed", + "Half-Half Cu Ww": "Shapesanity Half-Half Mixed", + "Checkered Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Ww": "Shapesanity Stitched Mixed", + "3-1 Cu Wy": "Shapesanity Stitched Mixed", + "Half-Half Cu Wy": "Shapesanity Half-Half Mixed", + "Checkered Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cu Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cu Wy": "Shapesanity Stitched Mixed", + "3-1 Cw Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cb": "Shapesanity Stitched Mixed", + "3-1 Cw Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cc": "Shapesanity Stitched Mixed", + "3-1 Cw Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cg": "Shapesanity Stitched Mixed", + "3-1 Cw Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cp": "Shapesanity Stitched Mixed", + "3-1 Cw Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cr": "Shapesanity Stitched Mixed", + "3-1 Cw Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cu": "Shapesanity Stitched Mixed", + "3-1 Cw Cy": "Shapesanity Colorful Full Mixed", + "Half-Half Cw Cy": "Shapesanity Colorful Full Mixed", + "Checkered Cw Cy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Cw Cy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Cy": "Shapesanity Stitched Mixed", + "3-1 Cw Rb": "Shapesanity Stitched Mixed", + "Half-Half Cw Rb": "Shapesanity Half-Half Mixed", + "Checkered Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rb": "Shapesanity Stitched Mixed", + "3-1 Cw Rc": "Shapesanity Stitched Mixed", + "Half-Half Cw Rc": "Shapesanity Half-Half Mixed", + "Checkered Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rc": "Shapesanity Stitched Mixed", + "3-1 Cw Rg": "Shapesanity Stitched Mixed", + "Half-Half Cw Rg": "Shapesanity Half-Half Mixed", + "Checkered Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rg": "Shapesanity Stitched Mixed", + "3-1 Cw Rp": "Shapesanity Stitched Mixed", + "Half-Half Cw Rp": "Shapesanity Half-Half Mixed", + "Checkered Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rp": "Shapesanity Stitched Mixed", + "3-1 Cw Rr": "Shapesanity Stitched Mixed", + "Half-Half Cw Rr": "Shapesanity Half-Half Mixed", + "Checkered Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rr": "Shapesanity Stitched Mixed", + "3-1 Cw Ru": "Shapesanity Stitched Mixed", + "Half-Half Cw Ru": "Shapesanity Half-Half Mixed", + "Checkered Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ru": "Shapesanity Stitched Mixed", + "3-1 Cw Rw": "Shapesanity Stitched Mixed", + "Half-Half Cw Rw": "Shapesanity Half-Half Mixed", + "Checkered Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Rw": "Shapesanity Stitched Mixed", + "3-1 Cw Ry": "Shapesanity Stitched Mixed", + "Half-Half Cw Ry": "Shapesanity Half-Half Mixed", + "Checkered Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ry": "Shapesanity Stitched Mixed", + "3-1 Cw Sb": "Shapesanity Stitched Mixed", + "Half-Half Cw Sb": "Shapesanity Half-Half Mixed", + "Checkered Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sb": "Shapesanity Stitched Mixed", + "3-1 Cw Sc": "Shapesanity Stitched Mixed", + "Half-Half Cw Sc": "Shapesanity Half-Half Mixed", + "Checkered Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sc": "Shapesanity Stitched Mixed", + "3-1 Cw Sg": "Shapesanity Stitched Mixed", + "Half-Half Cw Sg": "Shapesanity Half-Half Mixed", + "Checkered Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sg": "Shapesanity Stitched Mixed", + "3-1 Cw Sp": "Shapesanity Stitched Mixed", + "Half-Half Cw Sp": "Shapesanity Half-Half Mixed", + "Checkered Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sp": "Shapesanity Stitched Mixed", + "3-1 Cw Sr": "Shapesanity Stitched Mixed", + "Half-Half Cw Sr": "Shapesanity Half-Half Mixed", + "Checkered Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sr": "Shapesanity Stitched Mixed", + "3-1 Cw Su": "Shapesanity Stitched Mixed", + "Half-Half Cw Su": "Shapesanity Half-Half Mixed", + "Checkered Cw Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Su": "Shapesanity Stitched Mixed", + "3-1 Cw Sw": "Shapesanity Stitched Mixed", + "Half-Half Cw Sw": "Shapesanity Half-Half Mixed", + "Checkered Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sw": "Shapesanity Stitched Mixed", + "3-1 Cw Sy": "Shapesanity Stitched Mixed", + "Half-Half Cw Sy": "Shapesanity Half-Half Mixed", + "Checkered Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Sy": "Shapesanity Stitched Mixed", + "3-1 Cw Wb": "Shapesanity Stitched Mixed", + "Half-Half Cw Wb": "Shapesanity Half-Half Mixed", + "Checkered Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wb": "Shapesanity Stitched Mixed", + "3-1 Cw Wc": "Shapesanity Stitched Mixed", + "Half-Half Cw Wc": "Shapesanity Half-Half Mixed", + "Checkered Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wc": "Shapesanity Stitched Mixed", + "3-1 Cw Wg": "Shapesanity Stitched Mixed", + "Half-Half Cw Wg": "Shapesanity Half-Half Mixed", + "Checkered Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wg": "Shapesanity Stitched Mixed", + "3-1 Cw Wp": "Shapesanity Stitched Mixed", + "Half-Half Cw Wp": "Shapesanity Half-Half Mixed", + "Checkered Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wp": "Shapesanity Stitched Mixed", + "3-1 Cw Wr": "Shapesanity Stitched Mixed", + "Half-Half Cw Wr": "Shapesanity Half-Half Mixed", + "Checkered Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wr": "Shapesanity Stitched Mixed", + "3-1 Cw Wu": "Shapesanity Stitched Mixed", + "Half-Half Cw Wu": "Shapesanity Half-Half Mixed", + "Checkered Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wu": "Shapesanity Stitched Mixed", + "3-1 Cw Ww": "Shapesanity Stitched Mixed", + "Half-Half Cw Ww": "Shapesanity Half-Half Mixed", + "Checkered Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Ww": "Shapesanity Stitched Mixed", + "3-1 Cw Wy": "Shapesanity Stitched Mixed", + "Half-Half Cw Wy": "Shapesanity Half-Half Mixed", + "Checkered Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cw Wy": "Shapesanity Stitched Mixed", + "3-1 Cy Cb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cb": "Shapesanity Stitched Mixed", + "3-1 Cy Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cc": "Shapesanity Stitched Mixed", + "3-1 Cy Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cg": "Shapesanity Stitched Mixed", + "3-1 Cy Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cp": "Shapesanity Stitched Mixed", + "3-1 Cy Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cr": "Shapesanity Stitched Mixed", + "3-1 Cy Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cu": "Shapesanity Stitched Mixed", + "3-1 Cy Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Cy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Cw": "Shapesanity Stitched Mixed", + "3-1 Cy Rb": "Shapesanity Stitched Mixed", + "Half-Half Cy Rb": "Shapesanity Half-Half Mixed", + "Checkered Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rb": "Shapesanity Stitched Mixed", + "3-1 Cy Rc": "Shapesanity Stitched Mixed", + "Half-Half Cy Rc": "Shapesanity Half-Half Mixed", + "Checkered Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rc": "Shapesanity Stitched Mixed", + "3-1 Cy Rg": "Shapesanity Stitched Mixed", + "Half-Half Cy Rg": "Shapesanity Half-Half Mixed", + "Checkered Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rg": "Shapesanity Stitched Mixed", + "3-1 Cy Rp": "Shapesanity Stitched Mixed", + "Half-Half Cy Rp": "Shapesanity Half-Half Mixed", + "Checkered Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rp": "Shapesanity Stitched Mixed", + "3-1 Cy Rr": "Shapesanity Stitched Mixed", + "Half-Half Cy Rr": "Shapesanity Half-Half Mixed", + "Checkered Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rr": "Shapesanity Stitched Mixed", + "3-1 Cy Ru": "Shapesanity Stitched Mixed", + "Half-Half Cy Ru": "Shapesanity Half-Half Mixed", + "Checkered Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ru": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ru": "Shapesanity Stitched Mixed", + "3-1 Cy Rw": "Shapesanity Stitched Mixed", + "Half-Half Cy Rw": "Shapesanity Half-Half Mixed", + "Checkered Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Rw": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Rw": "Shapesanity Stitched Mixed", + "3-1 Cy Ry": "Shapesanity Stitched Mixed", + "Half-Half Cy Ry": "Shapesanity Half-Half Mixed", + "Checkered Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ry": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ry": "Shapesanity Stitched Mixed", + "3-1 Cy Sb": "Shapesanity Stitched Mixed", + "Half-Half Cy Sb": "Shapesanity Half-Half Mixed", + "Checkered Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sb": "Shapesanity Stitched Mixed", + "3-1 Cy Sc": "Shapesanity Stitched Mixed", + "Half-Half Cy Sc": "Shapesanity Half-Half Mixed", + "Checkered Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sc": "Shapesanity Stitched Mixed", + "3-1 Cy Sg": "Shapesanity Stitched Mixed", + "Half-Half Cy Sg": "Shapesanity Half-Half Mixed", + "Checkered Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sg": "Shapesanity Stitched Mixed", + "3-1 Cy Sp": "Shapesanity Stitched Mixed", + "Half-Half Cy Sp": "Shapesanity Half-Half Mixed", + "Checkered Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sp": "Shapesanity Stitched Mixed", + "3-1 Cy Sr": "Shapesanity Stitched Mixed", + "Half-Half Cy Sr": "Shapesanity Half-Half Mixed", + "Checkered Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sr": "Shapesanity Stitched Mixed", + "3-1 Cy Su": "Shapesanity Stitched Mixed", + "Half-Half Cy Su": "Shapesanity Half-Half Mixed", + "Checkered Cy Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Su": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Su": "Shapesanity Stitched Mixed", + "3-1 Cy Sw": "Shapesanity Stitched Mixed", + "Half-Half Cy Sw": "Shapesanity Half-Half Mixed", + "Checkered Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sw": "Shapesanity Stitched Mixed", + "3-1 Cy Sy": "Shapesanity Stitched Mixed", + "Half-Half Cy Sy": "Shapesanity Half-Half Mixed", + "Checkered Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Sy": "Shapesanity Stitched Mixed", + "3-1 Cy Wb": "Shapesanity Stitched Mixed", + "Half-Half Cy Wb": "Shapesanity Half-Half Mixed", + "Checkered Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wb": "Shapesanity Stitched Mixed", + "3-1 Cy Wc": "Shapesanity Stitched Mixed", + "Half-Half Cy Wc": "Shapesanity Half-Half Mixed", + "Checkered Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wc": "Shapesanity Stitched Mixed", + "3-1 Cy Wg": "Shapesanity Stitched Mixed", + "Half-Half Cy Wg": "Shapesanity Half-Half Mixed", + "Checkered Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wg": "Shapesanity Stitched Mixed", + "3-1 Cy Wp": "Shapesanity Stitched Mixed", + "Half-Half Cy Wp": "Shapesanity Half-Half Mixed", + "Checkered Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wp": "Shapesanity Stitched Mixed", + "3-1 Cy Wr": "Shapesanity Stitched Mixed", + "Half-Half Cy Wr": "Shapesanity Half-Half Mixed", + "Checkered Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wr": "Shapesanity Stitched Mixed", + "3-1 Cy Wu": "Shapesanity Stitched Mixed", + "Half-Half Cy Wu": "Shapesanity Half-Half Mixed", + "Checkered Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wu": "Shapesanity Stitched Mixed", + "3-1 Cy Ww": "Shapesanity Stitched Mixed", + "Half-Half Cy Ww": "Shapesanity Half-Half Mixed", + "Checkered Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Ww": "Shapesanity Stitched Mixed", + "3-1 Cy Wy": "Shapesanity Stitched Mixed", + "Half-Half Cy Wy": "Shapesanity Half-Half Mixed", + "Checkered Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Cy Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Cy Wy": "Shapesanity Stitched Mixed", + "3-1 Rb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cb": "Shapesanity Stitched Painted", + "3-1 Rb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cc": "Shapesanity Stitched Mixed", + "3-1 Rb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cg": "Shapesanity Stitched Painted", + "3-1 Rb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cp": "Shapesanity Stitched Mixed", + "3-1 Rb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cr": "Shapesanity Stitched Painted", + "3-1 Rb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Cu": "Shapesanity Stitched Painted", + "3-1 Rb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cw": "Shapesanity Stitched Mixed", + "3-1 Rb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Cy": "Shapesanity Stitched Mixed", + "3-1 Rb Rc": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rc": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rc": "Shapesanity Stitched Mixed", + "3-1 Rb Rg": "Shapesanity Colorful Full Painted", + "Half-Half Rb Rg": "Shapesanity Colorful Full Painted", + "Checkered Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Rg": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Rg": "Shapesanity Stitched Painted", + "3-1 Rb Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rp": "Shapesanity Stitched Mixed", + "3-1 Rb Rr": "Shapesanity Colorful Full Painted", + "Half-Half Rb Rr": "Shapesanity Colorful Full Painted", + "Checkered Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Rr": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Rr": "Shapesanity Stitched Painted", + "3-1 Rb Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rb Ru": "Shapesanity Colorful Full Painted", + "Checkered Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rb Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Ru": "Shapesanity Stitched Painted", + "3-1 Rb Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Rw": "Shapesanity Stitched Mixed", + "3-1 Rb Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rb Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rb Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Ry": "Shapesanity Stitched Mixed", + "3-1 Rb Sb": "Shapesanity Stitched Painted", + "Half-Half Rb Sb": "Shapesanity Half-Half Painted", + "Checkered Rb Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sb": "Shapesanity Stitched Painted", + "3-1 Rb Sc": "Shapesanity Stitched Mixed", + "Half-Half Rb Sc": "Shapesanity Half-Half Mixed", + "Checkered Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sc": "Shapesanity Stitched Mixed", + "3-1 Rb Sg": "Shapesanity Stitched Painted", + "Half-Half Rb Sg": "Shapesanity Half-Half Painted", + "Checkered Rb Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sg": "Shapesanity Stitched Painted", + "3-1 Rb Sp": "Shapesanity Stitched Mixed", + "Half-Half Rb Sp": "Shapesanity Half-Half Mixed", + "Checkered Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sp": "Shapesanity Stitched Mixed", + "3-1 Rb Sr": "Shapesanity Stitched Painted", + "Half-Half Rb Sr": "Shapesanity Half-Half Painted", + "Checkered Rb Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Sr": "Shapesanity Stitched Painted", + "3-1 Rb Su": "Shapesanity Stitched Painted", + "Half-Half Rb Su": "Shapesanity Half-Half Painted", + "Checkered Rb Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Su": "Shapesanity Stitched Painted", + "Cornered Singles Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Su": "Shapesanity Stitched Painted", + "3-1 Rb Sw": "Shapesanity Stitched Mixed", + "Half-Half Rb Sw": "Shapesanity Half-Half Mixed", + "Checkered Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sw": "Shapesanity Stitched Mixed", + "3-1 Rb Sy": "Shapesanity Stitched Mixed", + "Half-Half Rb Sy": "Shapesanity Half-Half Mixed", + "Checkered Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Sy": "Shapesanity Stitched Mixed", + "3-1 Rb Wb": "Shapesanity Stitched Painted", + "Half-Half Rb Wb": "Shapesanity Half-Half Painted", + "Checkered Rb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wb": "Shapesanity Stitched Painted", + "3-1 Rb Wc": "Shapesanity Stitched Mixed", + "Half-Half Rb Wc": "Shapesanity Half-Half Mixed", + "Checkered Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wc": "Shapesanity Stitched Mixed", + "3-1 Rb Wg": "Shapesanity Stitched Painted", + "Half-Half Rb Wg": "Shapesanity Half-Half Painted", + "Checkered Rb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wg": "Shapesanity Stitched Painted", + "3-1 Rb Wp": "Shapesanity Stitched Mixed", + "Half-Half Rb Wp": "Shapesanity Half-Half Mixed", + "Checkered Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wp": "Shapesanity Stitched Mixed", + "3-1 Rb Wr": "Shapesanity Stitched Painted", + "Half-Half Rb Wr": "Shapesanity Half-Half Painted", + "Checkered Rb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wr": "Shapesanity Stitched Painted", + "3-1 Rb Wu": "Shapesanity Stitched Painted", + "Half-Half Rb Wu": "Shapesanity Half-Half Painted", + "Checkered Rb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rb Wu": "Shapesanity Stitched Painted", + "3-1 Rb Ww": "Shapesanity Stitched Mixed", + "Half-Half Rb Ww": "Shapesanity Half-Half Mixed", + "Checkered Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Ww": "Shapesanity Stitched Mixed", + "3-1 Rb Wy": "Shapesanity Stitched Mixed", + "Half-Half Rb Wy": "Shapesanity Half-Half Mixed", + "Checkered Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rb Wy": "Shapesanity Stitched Mixed", + "3-1 Rc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cb": "Shapesanity Stitched Mixed", + "3-1 Rc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cc": "Shapesanity Stitched Mixed", + "3-1 Rc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cg": "Shapesanity Stitched Mixed", + "3-1 Rc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cp": "Shapesanity Stitched Mixed", + "3-1 Rc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cr": "Shapesanity Stitched Mixed", + "3-1 Rc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cu": "Shapesanity Stitched Mixed", + "3-1 Rc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cw": "Shapesanity Stitched Mixed", + "3-1 Rc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Cy": "Shapesanity Stitched Mixed", + "3-1 Rc Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rb": "Shapesanity Stitched Mixed", + "3-1 Rc Rg": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rg": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rg": "Shapesanity Stitched Mixed", + "3-1 Rc Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rp": "Shapesanity Stitched Mixed", + "3-1 Rc Rr": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rr": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rr": "Shapesanity Stitched Mixed", + "3-1 Rc Ru": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Ru": "Shapesanity Colorful Full Mixed", + "Checkered Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Ru": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ru": "Shapesanity Stitched Mixed", + "3-1 Rc Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Rw": "Shapesanity Stitched Mixed", + "3-1 Rc Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rc Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rc Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ry": "Shapesanity Stitched Mixed", + "3-1 Rc Sb": "Shapesanity Stitched Mixed", + "Half-Half Rc Sb": "Shapesanity Half-Half Mixed", + "Checkered Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sb": "Shapesanity Stitched Mixed", + "3-1 Rc Sc": "Shapesanity Stitched Mixed", + "Half-Half Rc Sc": "Shapesanity Half-Half Mixed", + "Checkered Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sc": "Shapesanity Stitched Mixed", + "3-1 Rc Sg": "Shapesanity Stitched Mixed", + "Half-Half Rc Sg": "Shapesanity Half-Half Mixed", + "Checkered Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sg": "Shapesanity Stitched Mixed", + "3-1 Rc Sp": "Shapesanity Stitched Mixed", + "Half-Half Rc Sp": "Shapesanity Half-Half Mixed", + "Checkered Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sp": "Shapesanity Stitched Mixed", + "3-1 Rc Sr": "Shapesanity Stitched Mixed", + "Half-Half Rc Sr": "Shapesanity Half-Half Mixed", + "Checkered Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sr": "Shapesanity Stitched Mixed", + "3-1 Rc Su": "Shapesanity Stitched Mixed", + "Half-Half Rc Su": "Shapesanity Half-Half Mixed", + "Checkered Rc Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Su": "Shapesanity Stitched Mixed", + "3-1 Rc Sw": "Shapesanity Stitched Mixed", + "Half-Half Rc Sw": "Shapesanity Half-Half Mixed", + "Checkered Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sw": "Shapesanity Stitched Mixed", + "3-1 Rc Sy": "Shapesanity Stitched Mixed", + "Half-Half Rc Sy": "Shapesanity Half-Half Mixed", + "Checkered Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Sy": "Shapesanity Stitched Mixed", + "3-1 Rc Wb": "Shapesanity Stitched Mixed", + "Half-Half Rc Wb": "Shapesanity Half-Half Mixed", + "Checkered Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wb": "Shapesanity Stitched Mixed", + "3-1 Rc Wc": "Shapesanity Stitched Mixed", + "Half-Half Rc Wc": "Shapesanity Half-Half Mixed", + "Checkered Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wc": "Shapesanity Stitched Mixed", + "3-1 Rc Wg": "Shapesanity Stitched Mixed", + "Half-Half Rc Wg": "Shapesanity Half-Half Mixed", + "Checkered Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wg": "Shapesanity Stitched Mixed", + "3-1 Rc Wp": "Shapesanity Stitched Mixed", + "Half-Half Rc Wp": "Shapesanity Half-Half Mixed", + "Checkered Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wp": "Shapesanity Stitched Mixed", + "3-1 Rc Wr": "Shapesanity Stitched Mixed", + "Half-Half Rc Wr": "Shapesanity Half-Half Mixed", + "Checkered Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wr": "Shapesanity Stitched Mixed", + "3-1 Rc Wu": "Shapesanity Stitched Mixed", + "Half-Half Rc Wu": "Shapesanity Half-Half Mixed", + "Checkered Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wu": "Shapesanity Stitched Mixed", + "3-1 Rc Ww": "Shapesanity Stitched Mixed", + "Half-Half Rc Ww": "Shapesanity Half-Half Mixed", + "Checkered Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Ww": "Shapesanity Stitched Mixed", + "3-1 Rc Wy": "Shapesanity Stitched Mixed", + "Half-Half Rc Wy": "Shapesanity Half-Half Mixed", + "Checkered Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rc Wy": "Shapesanity Stitched Mixed", + "3-1 Rg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cb": "Shapesanity Stitched Painted", + "3-1 Rg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cc": "Shapesanity Stitched Mixed", + "3-1 Rg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cg": "Shapesanity Stitched Painted", + "3-1 Rg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cp": "Shapesanity Stitched Mixed", + "3-1 Rg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cr": "Shapesanity Stitched Painted", + "3-1 Rg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Cu": "Shapesanity Stitched Painted", + "3-1 Rg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cw": "Shapesanity Stitched Mixed", + "3-1 Rg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Cy": "Shapesanity Stitched Mixed", + "3-1 Rg Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Rb": "Shapesanity Stitched Painted", + "3-1 Rg Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rc": "Shapesanity Stitched Mixed", + "3-1 Rg Rp": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Rp": "Shapesanity Colorful Full Mixed", + "Checkered Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Rp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rp": "Shapesanity Stitched Mixed", + "3-1 Rg Rr": "Shapesanity Colorful Full Painted", + "Half-Half Rg Rr": "Shapesanity Colorful Full Painted", + "Checkered Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rg Rr": "Shapesanity Colorful Half Painted", + "Cornered Singles Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Rr": "Shapesanity Stitched Painted", + "3-1 Rg Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rg Ru": "Shapesanity Colorful Full Painted", + "Checkered Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rg Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Ru": "Shapesanity Stitched Painted", + "3-1 Rg Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Rw": "Shapesanity Stitched Mixed", + "3-1 Rg Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rg Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rg Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Ry": "Shapesanity Stitched Mixed", + "3-1 Rg Sb": "Shapesanity Stitched Painted", + "Half-Half Rg Sb": "Shapesanity Half-Half Painted", + "Checkered Rg Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sb": "Shapesanity Stitched Painted", + "3-1 Rg Sc": "Shapesanity Stitched Mixed", + "Half-Half Rg Sc": "Shapesanity Half-Half Mixed", + "Checkered Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sc": "Shapesanity Stitched Mixed", + "3-1 Rg Sg": "Shapesanity Stitched Painted", + "Half-Half Rg Sg": "Shapesanity Half-Half Painted", + "Checkered Rg Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sg": "Shapesanity Stitched Painted", + "3-1 Rg Sp": "Shapesanity Stitched Mixed", + "Half-Half Rg Sp": "Shapesanity Half-Half Mixed", + "Checkered Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sp": "Shapesanity Stitched Mixed", + "3-1 Rg Sr": "Shapesanity Stitched Painted", + "Half-Half Rg Sr": "Shapesanity Half-Half Painted", + "Checkered Rg Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Sr": "Shapesanity Stitched Painted", + "3-1 Rg Su": "Shapesanity Stitched Painted", + "Half-Half Rg Su": "Shapesanity Half-Half Painted", + "Checkered Rg Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Su": "Shapesanity Stitched Painted", + "Cornered Singles Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Su": "Shapesanity Stitched Painted", + "3-1 Rg Sw": "Shapesanity Stitched Mixed", + "Half-Half Rg Sw": "Shapesanity Half-Half Mixed", + "Checkered Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sw": "Shapesanity Stitched Mixed", + "3-1 Rg Sy": "Shapesanity Stitched Mixed", + "Half-Half Rg Sy": "Shapesanity Half-Half Mixed", + "Checkered Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Sy": "Shapesanity Stitched Mixed", + "3-1 Rg Wb": "Shapesanity Stitched Painted", + "Half-Half Rg Wb": "Shapesanity Half-Half Painted", + "Checkered Rg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wb": "Shapesanity Stitched Painted", + "3-1 Rg Wc": "Shapesanity Stitched Mixed", + "Half-Half Rg Wc": "Shapesanity Half-Half Mixed", + "Checkered Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wc": "Shapesanity Stitched Mixed", + "3-1 Rg Wg": "Shapesanity Stitched Painted", + "Half-Half Rg Wg": "Shapesanity Half-Half Painted", + "Checkered Rg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wg": "Shapesanity Stitched Painted", + "3-1 Rg Wp": "Shapesanity Stitched Mixed", + "Half-Half Rg Wp": "Shapesanity Half-Half Mixed", + "Checkered Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wp": "Shapesanity Stitched Mixed", + "3-1 Rg Wr": "Shapesanity Stitched Painted", + "Half-Half Rg Wr": "Shapesanity Half-Half Painted", + "Checkered Rg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wr": "Shapesanity Stitched Painted", + "3-1 Rg Wu": "Shapesanity Stitched Painted", + "Half-Half Rg Wu": "Shapesanity Half-Half Painted", + "Checkered Rg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rg Wu": "Shapesanity Stitched Painted", + "3-1 Rg Ww": "Shapesanity Stitched Mixed", + "Half-Half Rg Ww": "Shapesanity Half-Half Mixed", + "Checkered Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Ww": "Shapesanity Stitched Mixed", + "3-1 Rg Wy": "Shapesanity Stitched Mixed", + "Half-Half Rg Wy": "Shapesanity Half-Half Mixed", + "Checkered Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rg Wy": "Shapesanity Stitched Mixed", + "3-1 Rp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cb": "Shapesanity Stitched Mixed", + "3-1 Rp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cc": "Shapesanity Stitched Mixed", + "3-1 Rp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cg": "Shapesanity Stitched Mixed", + "3-1 Rp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cp": "Shapesanity Stitched Mixed", + "3-1 Rp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cr": "Shapesanity Stitched Mixed", + "3-1 Rp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cu": "Shapesanity Stitched Mixed", + "3-1 Rp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cw": "Shapesanity Stitched Mixed", + "3-1 Rp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Cy": "Shapesanity Stitched Mixed", + "3-1 Rp Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rb": "Shapesanity Stitched Mixed", + "3-1 Rp Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rc": "Shapesanity Stitched Mixed", + "3-1 Rp Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rg": "Shapesanity Stitched Mixed", + "3-1 Rp Rr": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Rr": "Shapesanity Colorful Full Mixed", + "Checkered Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Rr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rr": "Shapesanity Stitched Mixed", + "3-1 Rp Ru": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Ru": "Shapesanity Colorful Full Mixed", + "Checkered Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Ru": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ru": "Shapesanity Stitched Mixed", + "3-1 Rp Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Rw": "Shapesanity Stitched Mixed", + "3-1 Rp Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rp Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rp Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ry": "Shapesanity Stitched Mixed", + "3-1 Rp Sb": "Shapesanity Stitched Mixed", + "Half-Half Rp Sb": "Shapesanity Half-Half Mixed", + "Checkered Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sb": "Shapesanity Stitched Mixed", + "3-1 Rp Sc": "Shapesanity Stitched Mixed", + "Half-Half Rp Sc": "Shapesanity Half-Half Mixed", + "Checkered Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sc": "Shapesanity Stitched Mixed", + "3-1 Rp Sg": "Shapesanity Stitched Mixed", + "Half-Half Rp Sg": "Shapesanity Half-Half Mixed", + "Checkered Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sg": "Shapesanity Stitched Mixed", + "3-1 Rp Sp": "Shapesanity Stitched Mixed", + "Half-Half Rp Sp": "Shapesanity Half-Half Mixed", + "Checkered Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sp": "Shapesanity Stitched Mixed", + "3-1 Rp Sr": "Shapesanity Stitched Mixed", + "Half-Half Rp Sr": "Shapesanity Half-Half Mixed", + "Checkered Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sr": "Shapesanity Stitched Mixed", + "3-1 Rp Su": "Shapesanity Stitched Mixed", + "Half-Half Rp Su": "Shapesanity Half-Half Mixed", + "Checkered Rp Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Su": "Shapesanity Stitched Mixed", + "3-1 Rp Sw": "Shapesanity Stitched Mixed", + "Half-Half Rp Sw": "Shapesanity Half-Half Mixed", + "Checkered Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sw": "Shapesanity Stitched Mixed", + "3-1 Rp Sy": "Shapesanity Stitched Mixed", + "Half-Half Rp Sy": "Shapesanity Half-Half Mixed", + "Checkered Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Sy": "Shapesanity Stitched Mixed", + "3-1 Rp Wb": "Shapesanity Stitched Mixed", + "Half-Half Rp Wb": "Shapesanity Half-Half Mixed", + "Checkered Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wb": "Shapesanity Stitched Mixed", + "3-1 Rp Wc": "Shapesanity Stitched Mixed", + "Half-Half Rp Wc": "Shapesanity Half-Half Mixed", + "Checkered Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wc": "Shapesanity Stitched Mixed", + "3-1 Rp Wg": "Shapesanity Stitched Mixed", + "Half-Half Rp Wg": "Shapesanity Half-Half Mixed", + "Checkered Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wg": "Shapesanity Stitched Mixed", + "3-1 Rp Wp": "Shapesanity Stitched Mixed", + "Half-Half Rp Wp": "Shapesanity Half-Half Mixed", + "Checkered Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wp": "Shapesanity Stitched Mixed", + "3-1 Rp Wr": "Shapesanity Stitched Mixed", + "Half-Half Rp Wr": "Shapesanity Half-Half Mixed", + "Checkered Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wr": "Shapesanity Stitched Mixed", + "3-1 Rp Wu": "Shapesanity Stitched Mixed", + "Half-Half Rp Wu": "Shapesanity Half-Half Mixed", + "Checkered Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wu": "Shapesanity Stitched Mixed", + "3-1 Rp Ww": "Shapesanity Stitched Mixed", + "Half-Half Rp Ww": "Shapesanity Half-Half Mixed", + "Checkered Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Ww": "Shapesanity Stitched Mixed", + "3-1 Rp Wy": "Shapesanity Stitched Mixed", + "Half-Half Rp Wy": "Shapesanity Half-Half Mixed", + "Checkered Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rp Wy": "Shapesanity Stitched Mixed", + "3-1 Rr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cb": "Shapesanity Stitched Painted", + "3-1 Rr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cc": "Shapesanity Stitched Mixed", + "3-1 Rr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cg": "Shapesanity Stitched Painted", + "3-1 Rr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cp": "Shapesanity Stitched Mixed", + "3-1 Rr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cr": "Shapesanity Stitched Painted", + "3-1 Rr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Cu": "Shapesanity Stitched Painted", + "3-1 Rr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cw": "Shapesanity Stitched Mixed", + "3-1 Rr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Cy": "Shapesanity Stitched Mixed", + "3-1 Rr Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Rb": "Shapesanity Stitched Painted", + "3-1 Rr Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rc": "Shapesanity Stitched Mixed", + "3-1 Rr Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Rr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Rg": "Shapesanity Stitched Painted", + "3-1 Rr Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rp": "Shapesanity Stitched Mixed", + "3-1 Rr Ru": "Shapesanity Colorful Full Painted", + "Half-Half Rr Ru": "Shapesanity Colorful Full Painted", + "Checkered Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent Singles Rr Ru": "Shapesanity Colorful Half Painted", + "Cornered Singles Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Ru": "Shapesanity Stitched Painted", + "3-1 Rr Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Rr Rw": "Shapesanity Colorful Full Mixed", + "Checkered Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rr Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Rw": "Shapesanity Stitched Mixed", + "3-1 Rr Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rr Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rr Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Ry": "Shapesanity Stitched Mixed", + "3-1 Rr Sb": "Shapesanity Stitched Painted", + "Half-Half Rr Sb": "Shapesanity Half-Half Painted", + "Checkered Rr Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sb": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sb": "Shapesanity Stitched Painted", + "3-1 Rr Sc": "Shapesanity Stitched Mixed", + "Half-Half Rr Sc": "Shapesanity Half-Half Mixed", + "Checkered Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sc": "Shapesanity Stitched Mixed", + "3-1 Rr Sg": "Shapesanity Stitched Painted", + "Half-Half Rr Sg": "Shapesanity Half-Half Painted", + "Checkered Rr Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sg": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sg": "Shapesanity Stitched Painted", + "3-1 Rr Sp": "Shapesanity Stitched Mixed", + "Half-Half Rr Sp": "Shapesanity Half-Half Mixed", + "Checkered Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sp": "Shapesanity Stitched Mixed", + "3-1 Rr Sr": "Shapesanity Stitched Painted", + "Half-Half Rr Sr": "Shapesanity Half-Half Painted", + "Checkered Rr Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Sr": "Shapesanity Stitched Painted", + "Cornered Singles Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Sr": "Shapesanity Stitched Painted", + "3-1 Rr Su": "Shapesanity Stitched Painted", + "Half-Half Rr Su": "Shapesanity Half-Half Painted", + "Checkered Rr Su": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Su": "Shapesanity Stitched Painted", + "Cornered Singles Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Su": "Shapesanity Stitched Painted", + "3-1 Rr Sw": "Shapesanity Stitched Mixed", + "Half-Half Rr Sw": "Shapesanity Half-Half Mixed", + "Checkered Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sw": "Shapesanity Stitched Mixed", + "3-1 Rr Sy": "Shapesanity Stitched Mixed", + "Half-Half Rr Sy": "Shapesanity Half-Half Mixed", + "Checkered Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Sy": "Shapesanity Stitched Mixed", + "3-1 Rr Wb": "Shapesanity Stitched Painted", + "Half-Half Rr Wb": "Shapesanity Half-Half Painted", + "Checkered Rr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wb": "Shapesanity Stitched Painted", + "3-1 Rr Wc": "Shapesanity Stitched Mixed", + "Half-Half Rr Wc": "Shapesanity Half-Half Mixed", + "Checkered Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wc": "Shapesanity Stitched Mixed", + "3-1 Rr Wg": "Shapesanity Stitched Painted", + "Half-Half Rr Wg": "Shapesanity Half-Half Painted", + "Checkered Rr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wg": "Shapesanity Stitched Painted", + "3-1 Rr Wp": "Shapesanity Stitched Mixed", + "Half-Half Rr Wp": "Shapesanity Half-Half Mixed", + "Checkered Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wp": "Shapesanity Stitched Mixed", + "3-1 Rr Wr": "Shapesanity Stitched Painted", + "Half-Half Rr Wr": "Shapesanity Half-Half Painted", + "Checkered Rr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wr": "Shapesanity Stitched Painted", + "3-1 Rr Wu": "Shapesanity Stitched Painted", + "Half-Half Rr Wu": "Shapesanity Half-Half Painted", + "Checkered Rr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Rr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Rr Wu": "Shapesanity Stitched Painted", + "3-1 Rr Ww": "Shapesanity Stitched Mixed", + "Half-Half Rr Ww": "Shapesanity Half-Half Mixed", + "Checkered Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Ww": "Shapesanity Stitched Mixed", + "3-1 Rr Wy": "Shapesanity Stitched Mixed", + "Half-Half Rr Wy": "Shapesanity Half-Half Mixed", + "Checkered Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rr Wy": "Shapesanity Stitched Mixed", + "3-1 Ru Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cb": "Shapesanity Stitched Painted", + "3-1 Ru Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cc": "Shapesanity Stitched Mixed", + "3-1 Ru Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cg": "Shapesanity Stitched Painted", + "3-1 Ru Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cp": "Shapesanity Stitched Mixed", + "3-1 Ru Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Cr": "Shapesanity Stitched Painted", + "3-1 Ru Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Cu": "Shapesanity Stitched Uncolored", + "3-1 Ru Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cw": "Shapesanity Stitched Mixed", + "3-1 Ru Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Cy": "Shapesanity Stitched Mixed", + "3-1 Ru Rb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rb": "Shapesanity Stitched Painted", + "3-1 Ru Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ru Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rc": "Shapesanity Stitched Mixed", + "3-1 Ru Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rg": "Shapesanity Stitched Painted", + "3-1 Ru Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ru Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rp": "Shapesanity Stitched Mixed", + "3-1 Ru Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Ru Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Rr": "Shapesanity Stitched Painted", + "3-1 Ru Rw": "Shapesanity Colorful Full Mixed", + "Half-Half Ru Rw": "Shapesanity Colorful Full Mixed", + "Checkered Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Ru Rw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Rw": "Shapesanity Stitched Mixed", + "3-1 Ru Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Ru Ry": "Shapesanity Colorful Full Mixed", + "Checkered Ru Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Ru Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Ry": "Shapesanity Stitched Mixed", + "3-1 Ru Sb": "Shapesanity Stitched Painted", + "Half-Half Ru Sb": "Shapesanity Half-Half Painted", + "Checkered Ru Sb": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sb": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sb": "Shapesanity Stitched Painted", + "3-1 Ru Sc": "Shapesanity Stitched Mixed", + "Half-Half Ru Sc": "Shapesanity Half-Half Mixed", + "Checkered Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sc": "Shapesanity Stitched Mixed", + "3-1 Ru Sg": "Shapesanity Stitched Painted", + "Half-Half Ru Sg": "Shapesanity Half-Half Painted", + "Checkered Ru Sg": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sg": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sg": "Shapesanity Stitched Painted", + "3-1 Ru Sp": "Shapesanity Stitched Mixed", + "Half-Half Ru Sp": "Shapesanity Half-Half Mixed", + "Checkered Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sp": "Shapesanity Stitched Mixed", + "3-1 Ru Sr": "Shapesanity Stitched Painted", + "Half-Half Ru Sr": "Shapesanity Half-Half Painted", + "Checkered Ru Sr": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Sr": "Shapesanity Stitched Painted", + "Cornered Singles Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Sr": "Shapesanity Stitched Painted", + "3-1 Ru Su": "Shapesanity Stitched Uncolored", + "Half-Half Ru Su": "Shapesanity Half-Half Uncolored", + "Checkered Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent Singles Ru Su": "Shapesanity Stitched Uncolored", + "Cornered Singles Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Su": "Shapesanity Stitched Uncolored", + "3-1 Ru Sw": "Shapesanity Stitched Mixed", + "Half-Half Ru Sw": "Shapesanity Half-Half Mixed", + "Checkered Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sw": "Shapesanity Stitched Mixed", + "3-1 Ru Sy": "Shapesanity Stitched Mixed", + "Half-Half Ru Sy": "Shapesanity Half-Half Mixed", + "Checkered Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Sy": "Shapesanity Stitched Mixed", + "3-1 Ru Wb": "Shapesanity Stitched Painted", + "Half-Half Ru Wb": "Shapesanity Half-Half Painted", + "Checkered Ru Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wb": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wb": "Shapesanity Stitched Painted", + "3-1 Ru Wc": "Shapesanity Stitched Mixed", + "Half-Half Ru Wc": "Shapesanity Half-Half Mixed", + "Checkered Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wc": "Shapesanity Stitched Mixed", + "3-1 Ru Wg": "Shapesanity Stitched Painted", + "Half-Half Ru Wg": "Shapesanity Half-Half Painted", + "Checkered Ru Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wg": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wg": "Shapesanity Stitched Painted", + "3-1 Ru Wp": "Shapesanity Stitched Mixed", + "Half-Half Ru Wp": "Shapesanity Half-Half Mixed", + "Checkered Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wp": "Shapesanity Stitched Mixed", + "3-1 Ru Wr": "Shapesanity Stitched Painted", + "Half-Half Ru Wr": "Shapesanity Half-Half Painted", + "Checkered Ru Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Ru Wr": "Shapesanity Stitched Painted", + "Cornered Singles Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Ru Wr": "Shapesanity Stitched Painted", + "3-1 Ru Wu": "Shapesanity Stitched Uncolored", + "Half-Half Ru Wu": "Shapesanity Half-Half Uncolored", + "Checkered Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Ru Wu": "Shapesanity Stitched Uncolored", + "3-1 Ru Ww": "Shapesanity Stitched Mixed", + "Half-Half Ru Ww": "Shapesanity Half-Half Mixed", + "Checkered Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Ww": "Shapesanity Stitched Mixed", + "3-1 Ru Wy": "Shapesanity Stitched Mixed", + "Half-Half Ru Wy": "Shapesanity Half-Half Mixed", + "Checkered Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ru Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ru Wy": "Shapesanity Stitched Mixed", + "3-1 Rw Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cb": "Shapesanity Stitched Mixed", + "3-1 Rw Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cc": "Shapesanity Stitched Mixed", + "3-1 Rw Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cg": "Shapesanity Stitched Mixed", + "3-1 Rw Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cp": "Shapesanity Stitched Mixed", + "3-1 Rw Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cr": "Shapesanity Stitched Mixed", + "3-1 Rw Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cu": "Shapesanity Stitched Mixed", + "3-1 Rw Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cw": "Shapesanity Stitched Mixed", + "3-1 Rw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Cy": "Shapesanity Stitched Mixed", + "3-1 Rw Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rb": "Shapesanity Stitched Mixed", + "3-1 Rw Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rc": "Shapesanity Stitched Mixed", + "3-1 Rw Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rg": "Shapesanity Stitched Mixed", + "3-1 Rw Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rp": "Shapesanity Stitched Mixed", + "3-1 Rw Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Rr": "Shapesanity Stitched Mixed", + "3-1 Rw Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Rw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ru": "Shapesanity Stitched Mixed", + "3-1 Rw Ry": "Shapesanity Colorful Full Mixed", + "Half-Half Rw Ry": "Shapesanity Colorful Full Mixed", + "Checkered Rw Ry": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Rw Ry": "Shapesanity Colorful Half Mixed", + "Cornered Singles Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ry": "Shapesanity Stitched Mixed", + "3-1 Rw Sb": "Shapesanity Stitched Mixed", + "Half-Half Rw Sb": "Shapesanity Half-Half Mixed", + "Checkered Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sb": "Shapesanity Stitched Mixed", + "3-1 Rw Sc": "Shapesanity Stitched Mixed", + "Half-Half Rw Sc": "Shapesanity Half-Half Mixed", + "Checkered Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sc": "Shapesanity Stitched Mixed", + "3-1 Rw Sg": "Shapesanity Stitched Mixed", + "Half-Half Rw Sg": "Shapesanity Half-Half Mixed", + "Checkered Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sg": "Shapesanity Stitched Mixed", + "3-1 Rw Sp": "Shapesanity Stitched Mixed", + "Half-Half Rw Sp": "Shapesanity Half-Half Mixed", + "Checkered Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sp": "Shapesanity Stitched Mixed", + "3-1 Rw Sr": "Shapesanity Stitched Mixed", + "Half-Half Rw Sr": "Shapesanity Half-Half Mixed", + "Checkered Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sr": "Shapesanity Stitched Mixed", + "3-1 Rw Su": "Shapesanity Stitched Mixed", + "Half-Half Rw Su": "Shapesanity Half-Half Mixed", + "Checkered Rw Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Su": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Su": "Shapesanity Stitched Mixed", + "3-1 Rw Sw": "Shapesanity Stitched Mixed", + "Half-Half Rw Sw": "Shapesanity Half-Half Mixed", + "Checkered Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sw": "Shapesanity Stitched Mixed", + "3-1 Rw Sy": "Shapesanity Stitched Mixed", + "Half-Half Rw Sy": "Shapesanity Half-Half Mixed", + "Checkered Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Sy": "Shapesanity Stitched Mixed", + "3-1 Rw Wb": "Shapesanity Stitched Mixed", + "Half-Half Rw Wb": "Shapesanity Half-Half Mixed", + "Checkered Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wb": "Shapesanity Stitched Mixed", + "3-1 Rw Wc": "Shapesanity Stitched Mixed", + "Half-Half Rw Wc": "Shapesanity Half-Half Mixed", + "Checkered Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wc": "Shapesanity Stitched Mixed", + "3-1 Rw Wg": "Shapesanity Stitched Mixed", + "Half-Half Rw Wg": "Shapesanity Half-Half Mixed", + "Checkered Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wg": "Shapesanity Stitched Mixed", + "3-1 Rw Wp": "Shapesanity Stitched Mixed", + "Half-Half Rw Wp": "Shapesanity Half-Half Mixed", + "Checkered Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wp": "Shapesanity Stitched Mixed", + "3-1 Rw Wr": "Shapesanity Stitched Mixed", + "Half-Half Rw Wr": "Shapesanity Half-Half Mixed", + "Checkered Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wr": "Shapesanity Stitched Mixed", + "3-1 Rw Wu": "Shapesanity Stitched Mixed", + "Half-Half Rw Wu": "Shapesanity Half-Half Mixed", + "Checkered Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wu": "Shapesanity Stitched Mixed", + "3-1 Rw Ww": "Shapesanity Stitched Mixed", + "Half-Half Rw Ww": "Shapesanity Half-Half Mixed", + "Checkered Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Ww": "Shapesanity Stitched Mixed", + "3-1 Rw Wy": "Shapesanity Stitched Mixed", + "Half-Half Rw Wy": "Shapesanity Half-Half Mixed", + "Checkered Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Rw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Rw Wy": "Shapesanity Stitched Mixed", + "3-1 Ry Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cb": "Shapesanity Stitched Mixed", + "3-1 Ry Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cc": "Shapesanity Stitched Mixed", + "3-1 Ry Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cg": "Shapesanity Stitched Mixed", + "3-1 Ry Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cp": "Shapesanity Stitched Mixed", + "3-1 Ry Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cr": "Shapesanity Stitched Mixed", + "3-1 Ry Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cu": "Shapesanity Stitched Mixed", + "3-1 Ry Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cw": "Shapesanity Stitched Mixed", + "3-1 Ry Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Cy": "Shapesanity Stitched Mixed", + "3-1 Ry Rb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rb": "Shapesanity Stitched Mixed", + "3-1 Ry Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rc": "Shapesanity Stitched Mixed", + "3-1 Ry Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rg": "Shapesanity Stitched Mixed", + "3-1 Ry Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rp": "Shapesanity Stitched Mixed", + "3-1 Ry Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rr": "Shapesanity Stitched Mixed", + "3-1 Ry Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Ru": "Shapesanity Stitched Mixed", + "3-1 Ry Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Ry Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Rw": "Shapesanity Stitched Mixed", + "3-1 Ry Sb": "Shapesanity Stitched Mixed", + "Half-Half Ry Sb": "Shapesanity Half-Half Mixed", + "Checkered Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sb": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sb": "Shapesanity Stitched Mixed", + "3-1 Ry Sc": "Shapesanity Stitched Mixed", + "Half-Half Ry Sc": "Shapesanity Half-Half Mixed", + "Checkered Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sc": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sc": "Shapesanity Stitched Mixed", + "3-1 Ry Sg": "Shapesanity Stitched Mixed", + "Half-Half Ry Sg": "Shapesanity Half-Half Mixed", + "Checkered Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sg": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sg": "Shapesanity Stitched Mixed", + "3-1 Ry Sp": "Shapesanity Stitched Mixed", + "Half-Half Ry Sp": "Shapesanity Half-Half Mixed", + "Checkered Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sp": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sp": "Shapesanity Stitched Mixed", + "3-1 Ry Sr": "Shapesanity Stitched Mixed", + "Half-Half Ry Sr": "Shapesanity Half-Half Mixed", + "Checkered Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sr": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sr": "Shapesanity Stitched Mixed", + "3-1 Ry Su": "Shapesanity Stitched Mixed", + "Half-Half Ry Su": "Shapesanity Half-Half Mixed", + "Checkered Ry Su": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Su": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Su": "Shapesanity Stitched Mixed", + "3-1 Ry Sw": "Shapesanity Stitched Mixed", + "Half-Half Ry Sw": "Shapesanity Half-Half Mixed", + "Checkered Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sw": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sw": "Shapesanity Stitched Mixed", + "3-1 Ry Sy": "Shapesanity Stitched Mixed", + "Half-Half Ry Sy": "Shapesanity Half-Half Mixed", + "Checkered Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Sy": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Sy": "Shapesanity Stitched Mixed", + "3-1 Ry Wb": "Shapesanity Stitched Mixed", + "Half-Half Ry Wb": "Shapesanity Half-Half Mixed", + "Checkered Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wb": "Shapesanity Stitched Mixed", + "3-1 Ry Wc": "Shapesanity Stitched Mixed", + "Half-Half Ry Wc": "Shapesanity Half-Half Mixed", + "Checkered Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wc": "Shapesanity Stitched Mixed", + "3-1 Ry Wg": "Shapesanity Stitched Mixed", + "Half-Half Ry Wg": "Shapesanity Half-Half Mixed", + "Checkered Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wg": "Shapesanity Stitched Mixed", + "3-1 Ry Wp": "Shapesanity Stitched Mixed", + "Half-Half Ry Wp": "Shapesanity Half-Half Mixed", + "Checkered Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wp": "Shapesanity Stitched Mixed", + "3-1 Ry Wr": "Shapesanity Stitched Mixed", + "Half-Half Ry Wr": "Shapesanity Half-Half Mixed", + "Checkered Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wr": "Shapesanity Stitched Mixed", + "3-1 Ry Wu": "Shapesanity Stitched Mixed", + "Half-Half Ry Wu": "Shapesanity Half-Half Mixed", + "Checkered Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wu": "Shapesanity Stitched Mixed", + "3-1 Ry Ww": "Shapesanity Stitched Mixed", + "Half-Half Ry Ww": "Shapesanity Half-Half Mixed", + "Checkered Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Ww": "Shapesanity Stitched Mixed", + "3-1 Ry Wy": "Shapesanity Stitched Mixed", + "Half-Half Ry Wy": "Shapesanity Half-Half Mixed", + "Checkered Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Ry Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ry Wy": "Shapesanity Stitched Mixed", + "3-1 Sb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cb": "Shapesanity Stitched Painted", + "3-1 Sb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cc": "Shapesanity Stitched Mixed", + "3-1 Sb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cg": "Shapesanity Stitched Painted", + "3-1 Sb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cp": "Shapesanity Stitched Mixed", + "3-1 Sb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cr": "Shapesanity Stitched Painted", + "3-1 Sb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Cu": "Shapesanity Stitched Painted", + "3-1 Sb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cw": "Shapesanity Stitched Mixed", + "3-1 Sb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Cy": "Shapesanity Stitched Mixed", + "3-1 Sb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rb": "Shapesanity Stitched Painted", + "3-1 Sb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rc": "Shapesanity Stitched Mixed", + "3-1 Sb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rg": "Shapesanity Stitched Painted", + "3-1 Sb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rp": "Shapesanity Stitched Mixed", + "3-1 Sb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Rr": "Shapesanity Stitched Painted", + "3-1 Sb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Ru": "Shapesanity Stitched Painted", + "3-1 Sb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Rw": "Shapesanity Stitched Mixed", + "3-1 Sb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Ry": "Shapesanity Stitched Mixed", + "3-1 Sb Sc": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sc": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sc": "Shapesanity Stitched Mixed", + "3-1 Sb Sg": "Shapesanity Colorful Full Painted", + "Half-Half Sb Sg": "Shapesanity Colorful Full Painted", + "Checkered Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Sg": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Sg": "Shapesanity Stitched Painted", + "3-1 Sb Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sp": "Shapesanity Stitched Mixed", + "3-1 Sb Sr": "Shapesanity Colorful Full Painted", + "Half-Half Sb Sr": "Shapesanity Colorful Full Painted", + "Checkered Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Sr": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Sr": "Shapesanity Stitched Painted", + "3-1 Sb Su": "Shapesanity Colorful Full Painted", + "Half-Half Sb Su": "Shapesanity Colorful Full Painted", + "Checkered Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sb Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Su": "Shapesanity Stitched Painted", + "3-1 Sb Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sw": "Shapesanity Stitched Mixed", + "3-1 Sb Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sb Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sb Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Sy": "Shapesanity Stitched Mixed", + "3-1 Sb Wb": "Shapesanity Stitched Painted", + "Half-Half Sb Wb": "Shapesanity Half-Half Painted", + "Checkered Sb Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wb": "Shapesanity Stitched Painted", + "3-1 Sb Wc": "Shapesanity Stitched Mixed", + "Half-Half Sb Wc": "Shapesanity Half-Half Mixed", + "Checkered Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wc": "Shapesanity Stitched Mixed", + "3-1 Sb Wg": "Shapesanity Stitched Painted", + "Half-Half Sb Wg": "Shapesanity Half-Half Painted", + "Checkered Sb Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wg": "Shapesanity Stitched Painted", + "3-1 Sb Wp": "Shapesanity Stitched Mixed", + "Half-Half Sb Wp": "Shapesanity Half-Half Mixed", + "Checkered Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wp": "Shapesanity Stitched Mixed", + "3-1 Sb Wr": "Shapesanity Stitched Painted", + "Half-Half Sb Wr": "Shapesanity Half-Half Painted", + "Checkered Sb Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wr": "Shapesanity Stitched Painted", + "3-1 Sb Wu": "Shapesanity Stitched Painted", + "Half-Half Sb Wu": "Shapesanity Half-Half Painted", + "Checkered Sb Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sb Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sb Wu": "Shapesanity Stitched Painted", + "3-1 Sb Ww": "Shapesanity Stitched Mixed", + "Half-Half Sb Ww": "Shapesanity Half-Half Mixed", + "Checkered Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Ww": "Shapesanity Stitched Mixed", + "3-1 Sb Wy": "Shapesanity Stitched Mixed", + "Half-Half Sb Wy": "Shapesanity Half-Half Mixed", + "Checkered Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sb Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sb Wy": "Shapesanity Stitched Mixed", + "3-1 Sc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cb": "Shapesanity Stitched Mixed", + "3-1 Sc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cc": "Shapesanity Stitched Mixed", + "3-1 Sc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cg": "Shapesanity Stitched Mixed", + "3-1 Sc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cp": "Shapesanity Stitched Mixed", + "3-1 Sc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cr": "Shapesanity Stitched Mixed", + "3-1 Sc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cu": "Shapesanity Stitched Mixed", + "3-1 Sc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cw": "Shapesanity Stitched Mixed", + "3-1 Sc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Cy": "Shapesanity Stitched Mixed", + "3-1 Sc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rb": "Shapesanity Stitched Mixed", + "3-1 Sc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rc": "Shapesanity Stitched Mixed", + "3-1 Sc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rg": "Shapesanity Stitched Mixed", + "3-1 Sc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rp": "Shapesanity Stitched Mixed", + "3-1 Sc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rr": "Shapesanity Stitched Mixed", + "3-1 Sc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ru": "Shapesanity Stitched Mixed", + "3-1 Sc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Rw": "Shapesanity Stitched Mixed", + "3-1 Sc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ry": "Shapesanity Stitched Mixed", + "3-1 Sc Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sb": "Shapesanity Stitched Mixed", + "3-1 Sc Sg": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sg": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sg": "Shapesanity Stitched Mixed", + "3-1 Sc Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sp": "Shapesanity Stitched Mixed", + "3-1 Sc Sr": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sr": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sr": "Shapesanity Stitched Mixed", + "3-1 Sc Su": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Su": "Shapesanity Colorful Full Mixed", + "Checkered Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Su": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Su": "Shapesanity Stitched Mixed", + "3-1 Sc Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sw": "Shapesanity Stitched Mixed", + "3-1 Sc Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sc Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sc Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Sy": "Shapesanity Stitched Mixed", + "3-1 Sc Wb": "Shapesanity Stitched Mixed", + "Half-Half Sc Wb": "Shapesanity Half-Half Mixed", + "Checkered Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wb": "Shapesanity Stitched Mixed", + "3-1 Sc Wc": "Shapesanity Stitched Mixed", + "Half-Half Sc Wc": "Shapesanity Half-Half Mixed", + "Checkered Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wc": "Shapesanity Stitched Mixed", + "3-1 Sc Wg": "Shapesanity Stitched Mixed", + "Half-Half Sc Wg": "Shapesanity Half-Half Mixed", + "Checkered Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wg": "Shapesanity Stitched Mixed", + "3-1 Sc Wp": "Shapesanity Stitched Mixed", + "Half-Half Sc Wp": "Shapesanity Half-Half Mixed", + "Checkered Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wp": "Shapesanity Stitched Mixed", + "3-1 Sc Wr": "Shapesanity Stitched Mixed", + "Half-Half Sc Wr": "Shapesanity Half-Half Mixed", + "Checkered Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wr": "Shapesanity Stitched Mixed", + "3-1 Sc Wu": "Shapesanity Stitched Mixed", + "Half-Half Sc Wu": "Shapesanity Half-Half Mixed", + "Checkered Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wu": "Shapesanity Stitched Mixed", + "3-1 Sc Ww": "Shapesanity Stitched Mixed", + "Half-Half Sc Ww": "Shapesanity Half-Half Mixed", + "Checkered Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Ww": "Shapesanity Stitched Mixed", + "3-1 Sc Wy": "Shapesanity Stitched Mixed", + "Half-Half Sc Wy": "Shapesanity Half-Half Mixed", + "Checkered Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sc Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sc Wy": "Shapesanity Stitched Mixed", + "3-1 Sg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cb": "Shapesanity Stitched Painted", + "3-1 Sg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cc": "Shapesanity Stitched Mixed", + "3-1 Sg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cg": "Shapesanity Stitched Painted", + "3-1 Sg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cp": "Shapesanity Stitched Mixed", + "3-1 Sg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cr": "Shapesanity Stitched Painted", + "3-1 Sg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Cu": "Shapesanity Stitched Painted", + "3-1 Sg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cw": "Shapesanity Stitched Mixed", + "3-1 Sg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Cy": "Shapesanity Stitched Mixed", + "3-1 Sg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rb": "Shapesanity Stitched Painted", + "3-1 Sg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rc": "Shapesanity Stitched Mixed", + "3-1 Sg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rg": "Shapesanity Stitched Painted", + "3-1 Sg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rp": "Shapesanity Stitched Mixed", + "3-1 Sg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Rr": "Shapesanity Stitched Painted", + "3-1 Sg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Ru": "Shapesanity Stitched Painted", + "3-1 Sg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Rw": "Shapesanity Stitched Mixed", + "3-1 Sg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Ry": "Shapesanity Stitched Mixed", + "3-1 Sg Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Sb": "Shapesanity Stitched Painted", + "3-1 Sg Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sc": "Shapesanity Stitched Mixed", + "3-1 Sg Sp": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sp": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sp": "Shapesanity Stitched Mixed", + "3-1 Sg Sr": "Shapesanity Colorful Full Painted", + "Half-Half Sg Sr": "Shapesanity Colorful Full Painted", + "Checkered Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sg Sr": "Shapesanity Colorful Half Painted", + "Cornered Singles Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Sr": "Shapesanity Stitched Painted", + "3-1 Sg Su": "Shapesanity Colorful Full Painted", + "Half-Half Sg Su": "Shapesanity Colorful Full Painted", + "Checkered Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sg Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Su": "Shapesanity Stitched Painted", + "3-1 Sg Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sw": "Shapesanity Stitched Mixed", + "3-1 Sg Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sg Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sg Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Sy": "Shapesanity Stitched Mixed", + "3-1 Sg Wb": "Shapesanity Stitched Painted", + "Half-Half Sg Wb": "Shapesanity Half-Half Painted", + "Checkered Sg Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wb": "Shapesanity Stitched Painted", + "3-1 Sg Wc": "Shapesanity Stitched Mixed", + "Half-Half Sg Wc": "Shapesanity Half-Half Mixed", + "Checkered Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wc": "Shapesanity Stitched Mixed", + "3-1 Sg Wg": "Shapesanity Stitched Painted", + "Half-Half Sg Wg": "Shapesanity Half-Half Painted", + "Checkered Sg Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wg": "Shapesanity Stitched Painted", + "3-1 Sg Wp": "Shapesanity Stitched Mixed", + "Half-Half Sg Wp": "Shapesanity Half-Half Mixed", + "Checkered Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wp": "Shapesanity Stitched Mixed", + "3-1 Sg Wr": "Shapesanity Stitched Painted", + "Half-Half Sg Wr": "Shapesanity Half-Half Painted", + "Checkered Sg Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wr": "Shapesanity Stitched Painted", + "3-1 Sg Wu": "Shapesanity Stitched Painted", + "Half-Half Sg Wu": "Shapesanity Half-Half Painted", + "Checkered Sg Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sg Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sg Wu": "Shapesanity Stitched Painted", + "3-1 Sg Ww": "Shapesanity Stitched Mixed", + "Half-Half Sg Ww": "Shapesanity Half-Half Mixed", + "Checkered Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Ww": "Shapesanity Stitched Mixed", + "3-1 Sg Wy": "Shapesanity Stitched Mixed", + "Half-Half Sg Wy": "Shapesanity Half-Half Mixed", + "Checkered Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sg Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sg Wy": "Shapesanity Stitched Mixed", + "3-1 Sp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cb": "Shapesanity Stitched Mixed", + "3-1 Sp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cc": "Shapesanity Stitched Mixed", + "3-1 Sp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cg": "Shapesanity Stitched Mixed", + "3-1 Sp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cp": "Shapesanity Stitched Mixed", + "3-1 Sp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cr": "Shapesanity Stitched Mixed", + "3-1 Sp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cu": "Shapesanity Stitched Mixed", + "3-1 Sp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cw": "Shapesanity Stitched Mixed", + "3-1 Sp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Cy": "Shapesanity Stitched Mixed", + "3-1 Sp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rb": "Shapesanity Stitched Mixed", + "3-1 Sp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rc": "Shapesanity Stitched Mixed", + "3-1 Sp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rg": "Shapesanity Stitched Mixed", + "3-1 Sp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rp": "Shapesanity Stitched Mixed", + "3-1 Sp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rr": "Shapesanity Stitched Mixed", + "3-1 Sp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ru": "Shapesanity Stitched Mixed", + "3-1 Sp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Rw": "Shapesanity Stitched Mixed", + "3-1 Sp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ry": "Shapesanity Stitched Mixed", + "3-1 Sp Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sb": "Shapesanity Stitched Mixed", + "3-1 Sp Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sc": "Shapesanity Stitched Mixed", + "3-1 Sp Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sg": "Shapesanity Stitched Mixed", + "3-1 Sp Sr": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sr": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sr": "Shapesanity Stitched Mixed", + "3-1 Sp Su": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Su": "Shapesanity Colorful Full Mixed", + "Checkered Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Su": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Su": "Shapesanity Stitched Mixed", + "3-1 Sp Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sw": "Shapesanity Stitched Mixed", + "3-1 Sp Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sp Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sp Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Sy": "Shapesanity Stitched Mixed", + "3-1 Sp Wb": "Shapesanity Stitched Mixed", + "Half-Half Sp Wb": "Shapesanity Half-Half Mixed", + "Checkered Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wb": "Shapesanity Stitched Mixed", + "3-1 Sp Wc": "Shapesanity Stitched Mixed", + "Half-Half Sp Wc": "Shapesanity Half-Half Mixed", + "Checkered Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wc": "Shapesanity Stitched Mixed", + "3-1 Sp Wg": "Shapesanity Stitched Mixed", + "Half-Half Sp Wg": "Shapesanity Half-Half Mixed", + "Checkered Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wg": "Shapesanity Stitched Mixed", + "3-1 Sp Wp": "Shapesanity Stitched Mixed", + "Half-Half Sp Wp": "Shapesanity Half-Half Mixed", + "Checkered Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wp": "Shapesanity Stitched Mixed", + "3-1 Sp Wr": "Shapesanity Stitched Mixed", + "Half-Half Sp Wr": "Shapesanity Half-Half Mixed", + "Checkered Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wr": "Shapesanity Stitched Mixed", + "3-1 Sp Wu": "Shapesanity Stitched Mixed", + "Half-Half Sp Wu": "Shapesanity Half-Half Mixed", + "Checkered Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wu": "Shapesanity Stitched Mixed", + "3-1 Sp Ww": "Shapesanity Stitched Mixed", + "Half-Half Sp Ww": "Shapesanity Half-Half Mixed", + "Checkered Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Ww": "Shapesanity Stitched Mixed", + "3-1 Sp Wy": "Shapesanity Stitched Mixed", + "Half-Half Sp Wy": "Shapesanity Half-Half Mixed", + "Checkered Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sp Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sp Wy": "Shapesanity Stitched Mixed", + "3-1 Sr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cb": "Shapesanity Stitched Painted", + "3-1 Sr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cc": "Shapesanity Stitched Mixed", + "3-1 Sr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cg": "Shapesanity Stitched Painted", + "3-1 Sr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cp": "Shapesanity Stitched Mixed", + "3-1 Sr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cr": "Shapesanity Stitched Painted", + "3-1 Sr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Cu": "Shapesanity Stitched Painted", + "3-1 Sr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cw": "Shapesanity Stitched Mixed", + "3-1 Sr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Cy": "Shapesanity Stitched Mixed", + "3-1 Sr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rb": "Shapesanity Stitched Painted", + "3-1 Sr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rc": "Shapesanity Stitched Mixed", + "3-1 Sr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rg": "Shapesanity Stitched Painted", + "3-1 Sr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rp": "Shapesanity Stitched Mixed", + "3-1 Sr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Rr": "Shapesanity Stitched Painted", + "3-1 Sr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Ru": "Shapesanity Stitched Painted", + "3-1 Sr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Rw": "Shapesanity Stitched Mixed", + "3-1 Sr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Ry": "Shapesanity Stitched Mixed", + "3-1 Sr Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Sb": "Shapesanity Stitched Painted", + "3-1 Sr Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sc": "Shapesanity Stitched Mixed", + "3-1 Sr Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Sr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Sg": "Shapesanity Stitched Painted", + "3-1 Sr Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sp": "Shapesanity Stitched Mixed", + "3-1 Sr Su": "Shapesanity Colorful Full Painted", + "Half-Half Sr Su": "Shapesanity Colorful Full Painted", + "Checkered Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent Singles Sr Su": "Shapesanity Colorful Half Painted", + "Cornered Singles Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Su": "Shapesanity Stitched Painted", + "3-1 Sr Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Sr Sw": "Shapesanity Colorful Full Mixed", + "Checkered Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sr Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sw": "Shapesanity Stitched Mixed", + "3-1 Sr Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sr Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sr Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Sy": "Shapesanity Stitched Mixed", + "3-1 Sr Wb": "Shapesanity Stitched Painted", + "Half-Half Sr Wb": "Shapesanity Half-Half Painted", + "Checkered Sr Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wb": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wb": "Shapesanity Stitched Painted", + "3-1 Sr Wc": "Shapesanity Stitched Mixed", + "Half-Half Sr Wc": "Shapesanity Half-Half Mixed", + "Checkered Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wc": "Shapesanity Stitched Mixed", + "3-1 Sr Wg": "Shapesanity Stitched Painted", + "Half-Half Sr Wg": "Shapesanity Half-Half Painted", + "Checkered Sr Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wg": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wg": "Shapesanity Stitched Painted", + "3-1 Sr Wp": "Shapesanity Stitched Mixed", + "Half-Half Sr Wp": "Shapesanity Half-Half Mixed", + "Checkered Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wp": "Shapesanity Stitched Mixed", + "3-1 Sr Wr": "Shapesanity Stitched Painted", + "Half-Half Sr Wr": "Shapesanity Half-Half Painted", + "Checkered Sr Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wr": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wr": "Shapesanity Stitched Painted", + "3-1 Sr Wu": "Shapesanity Stitched Painted", + "Half-Half Sr Wu": "Shapesanity Half-Half Painted", + "Checkered Sr Wu": "Shapesanity Stitched Painted", + "Adjacent Singles Sr Wu": "Shapesanity Stitched Painted", + "Cornered Singles Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Sr Wu": "Shapesanity Stitched Painted", + "3-1 Sr Ww": "Shapesanity Stitched Mixed", + "Half-Half Sr Ww": "Shapesanity Half-Half Mixed", + "Checkered Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Ww": "Shapesanity Stitched Mixed", + "3-1 Sr Wy": "Shapesanity Stitched Mixed", + "Half-Half Sr Wy": "Shapesanity Half-Half Mixed", + "Checkered Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sr Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sr Wy": "Shapesanity Stitched Mixed", + "3-1 Su Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cb": "Shapesanity Stitched Painted", + "3-1 Su Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cc": "Shapesanity Stitched Mixed", + "3-1 Su Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cg": "Shapesanity Stitched Painted", + "3-1 Su Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cp": "Shapesanity Stitched Mixed", + "3-1 Su Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Cr": "Shapesanity Stitched Painted", + "3-1 Su Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Cu": "Shapesanity Stitched Uncolored", + "3-1 Su Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cw": "Shapesanity Stitched Mixed", + "3-1 Su Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Cy": "Shapesanity Stitched Mixed", + "3-1 Su Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rb": "Shapesanity Stitched Painted", + "3-1 Su Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rc": "Shapesanity Stitched Mixed", + "3-1 Su Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rg": "Shapesanity Stitched Painted", + "3-1 Su Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rp": "Shapesanity Stitched Mixed", + "3-1 Su Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Rr": "Shapesanity Stitched Painted", + "3-1 Su Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Ru": "Shapesanity Stitched Uncolored", + "3-1 Su Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Rw": "Shapesanity Stitched Mixed", + "3-1 Su Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Ry": "Shapesanity Stitched Mixed", + "3-1 Su Sb": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sb": "Shapesanity Stitched Painted", + "3-1 Su Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Su Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sc": "Shapesanity Stitched Mixed", + "3-1 Su Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sg": "Shapesanity Stitched Painted", + "3-1 Su Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Su Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sp": "Shapesanity Stitched Mixed", + "3-1 Su Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1 Su Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Sr": "Shapesanity Stitched Painted", + "3-1 Su Sw": "Shapesanity Colorful Full Mixed", + "Half-Half Su Sw": "Shapesanity Colorful Full Mixed", + "Checkered Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Su Sw": "Shapesanity Colorful Half Mixed", + "Cornered Singles Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sw": "Shapesanity Stitched Mixed", + "3-1 Su Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Su Sy": "Shapesanity Colorful Full Mixed", + "Checkered Su Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Su Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Sy": "Shapesanity Stitched Mixed", + "3-1 Su Wb": "Shapesanity Stitched Painted", + "Half-Half Su Wb": "Shapesanity Half-Half Painted", + "Checkered Su Wb": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wb": "Shapesanity Stitched Painted", + "Cornered Singles Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wb": "Shapesanity Stitched Painted", + "3-1 Su Wc": "Shapesanity Stitched Mixed", + "Half-Half Su Wc": "Shapesanity Half-Half Mixed", + "Checkered Su Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wc": "Shapesanity Stitched Mixed", + "3-1 Su Wg": "Shapesanity Stitched Painted", + "Half-Half Su Wg": "Shapesanity Half-Half Painted", + "Checkered Su Wg": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wg": "Shapesanity Stitched Painted", + "Cornered Singles Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wg": "Shapesanity Stitched Painted", + "3-1 Su Wp": "Shapesanity Stitched Mixed", + "Half-Half Su Wp": "Shapesanity Half-Half Mixed", + "Checkered Su Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wp": "Shapesanity Stitched Mixed", + "3-1 Su Wr": "Shapesanity Stitched Painted", + "Half-Half Su Wr": "Shapesanity Half-Half Painted", + "Checkered Su Wr": "Shapesanity Stitched Painted", + "Adjacent Singles Su Wr": "Shapesanity Stitched Painted", + "Cornered Singles Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Su Wr": "Shapesanity Stitched Painted", + "3-1 Su Wu": "Shapesanity Stitched Uncolored", + "Half-Half Su Wu": "Shapesanity Half-Half Uncolored", + "Checkered Su Wu": "Shapesanity Stitched Uncolored", + "Adjacent Singles Su Wu": "Shapesanity Stitched Uncolored", + "Cornered Singles Su Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Su Wu": "Shapesanity Stitched Uncolored", + "3-1 Su Ww": "Shapesanity Stitched Mixed", + "Half-Half Su Ww": "Shapesanity Half-Half Mixed", + "Checkered Su Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Ww": "Shapesanity Stitched Mixed", + "3-1 Su Wy": "Shapesanity Stitched Mixed", + "Half-Half Su Wy": "Shapesanity Half-Half Mixed", + "Checkered Su Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Su Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Su Wy": "Shapesanity Stitched Mixed", + "3-1 Sw Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cb": "Shapesanity Stitched Mixed", + "3-1 Sw Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cc": "Shapesanity Stitched Mixed", + "3-1 Sw Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cg": "Shapesanity Stitched Mixed", + "3-1 Sw Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cp": "Shapesanity Stitched Mixed", + "3-1 Sw Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cr": "Shapesanity Stitched Mixed", + "3-1 Sw Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cu": "Shapesanity Stitched Mixed", + "3-1 Sw Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cw": "Shapesanity Stitched Mixed", + "3-1 Sw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Cy": "Shapesanity Stitched Mixed", + "3-1 Sw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rb": "Shapesanity Stitched Mixed", + "3-1 Sw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rc": "Shapesanity Stitched Mixed", + "3-1 Sw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rg": "Shapesanity Stitched Mixed", + "3-1 Sw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rp": "Shapesanity Stitched Mixed", + "3-1 Sw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rr": "Shapesanity Stitched Mixed", + "3-1 Sw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ru": "Shapesanity Stitched Mixed", + "3-1 Sw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Rw": "Shapesanity Stitched Mixed", + "3-1 Sw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ry": "Shapesanity Stitched Mixed", + "3-1 Sw Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sb": "Shapesanity Stitched Mixed", + "3-1 Sw Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sc": "Shapesanity Stitched Mixed", + "3-1 Sw Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sg": "Shapesanity Stitched Mixed", + "3-1 Sw Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sp": "Shapesanity Stitched Mixed", + "3-1 Sw Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sr": "Shapesanity Stitched Mixed", + "3-1 Sw Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Su": "Shapesanity Stitched Mixed", + "3-1 Sw Sy": "Shapesanity Colorful Full Mixed", + "Half-Half Sw Sy": "Shapesanity Colorful Full Mixed", + "Checkered Sw Sy": "Shapesanity Colorful Full Mixed", + "Adjacent Singles Sw Sy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Sy": "Shapesanity Stitched Mixed", + "3-1 Sw Wb": "Shapesanity Stitched Mixed", + "Half-Half Sw Wb": "Shapesanity Half-Half Mixed", + "Checkered Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wb": "Shapesanity Stitched Mixed", + "3-1 Sw Wc": "Shapesanity Stitched Mixed", + "Half-Half Sw Wc": "Shapesanity Half-Half Mixed", + "Checkered Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wc": "Shapesanity Stitched Mixed", + "3-1 Sw Wg": "Shapesanity Stitched Mixed", + "Half-Half Sw Wg": "Shapesanity Half-Half Mixed", + "Checkered Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wg": "Shapesanity Stitched Mixed", + "3-1 Sw Wp": "Shapesanity Stitched Mixed", + "Half-Half Sw Wp": "Shapesanity Half-Half Mixed", + "Checkered Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wp": "Shapesanity Stitched Mixed", + "3-1 Sw Wr": "Shapesanity Stitched Mixed", + "Half-Half Sw Wr": "Shapesanity Half-Half Mixed", + "Checkered Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wr": "Shapesanity Stitched Mixed", + "3-1 Sw Wu": "Shapesanity Stitched Mixed", + "Half-Half Sw Wu": "Shapesanity Half-Half Mixed", + "Checkered Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wu": "Shapesanity Stitched Mixed", + "3-1 Sw Ww": "Shapesanity Stitched Mixed", + "Half-Half Sw Ww": "Shapesanity Half-Half Mixed", + "Checkered Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Ww": "Shapesanity Stitched Mixed", + "3-1 Sw Wy": "Shapesanity Stitched Mixed", + "Half-Half Sw Wy": "Shapesanity Half-Half Mixed", + "Checkered Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sw Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sw Wy": "Shapesanity Stitched Mixed", + "3-1 Sy Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cb": "Shapesanity Stitched Mixed", + "3-1 Sy Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cc": "Shapesanity Stitched Mixed", + "3-1 Sy Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cg": "Shapesanity Stitched Mixed", + "3-1 Sy Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cp": "Shapesanity Stitched Mixed", + "3-1 Sy Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cr": "Shapesanity Stitched Mixed", + "3-1 Sy Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cu": "Shapesanity Stitched Mixed", + "3-1 Sy Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cw": "Shapesanity Stitched Mixed", + "3-1 Sy Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Cy": "Shapesanity Stitched Mixed", + "3-1 Sy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rb": "Shapesanity Stitched Mixed", + "3-1 Sy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rc": "Shapesanity Stitched Mixed", + "3-1 Sy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rg": "Shapesanity Stitched Mixed", + "3-1 Sy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rp": "Shapesanity Stitched Mixed", + "3-1 Sy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rr": "Shapesanity Stitched Mixed", + "3-1 Sy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ru": "Shapesanity Stitched Mixed", + "3-1 Sy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Rw": "Shapesanity Stitched Mixed", + "3-1 Sy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ry": "Shapesanity Stitched Mixed", + "3-1 Sy Sb": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sb": "Shapesanity Stitched Mixed", + "3-1 Sy Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sc": "Shapesanity Stitched Mixed", + "3-1 Sy Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sg": "Shapesanity Stitched Mixed", + "3-1 Sy Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sp": "Shapesanity Stitched Mixed", + "3-1 Sy Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sr": "Shapesanity Stitched Mixed", + "3-1 Sy Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Su": "Shapesanity Stitched Mixed", + "3-1 Sy Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1 Sy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Sw": "Shapesanity Stitched Mixed", + "3-1 Sy Wb": "Shapesanity Stitched Mixed", + "Half-Half Sy Wb": "Shapesanity Half-Half Mixed", + "Checkered Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wb": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wb": "Shapesanity Stitched Mixed", + "3-1 Sy Wc": "Shapesanity Stitched Mixed", + "Half-Half Sy Wc": "Shapesanity Half-Half Mixed", + "Checkered Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wc": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wc": "Shapesanity Stitched Mixed", + "3-1 Sy Wg": "Shapesanity Stitched Mixed", + "Half-Half Sy Wg": "Shapesanity Half-Half Mixed", + "Checkered Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wg": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wg": "Shapesanity Stitched Mixed", + "3-1 Sy Wp": "Shapesanity Stitched Mixed", + "Half-Half Sy Wp": "Shapesanity Half-Half Mixed", + "Checkered Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wp": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wp": "Shapesanity Stitched Mixed", + "3-1 Sy Wr": "Shapesanity Stitched Mixed", + "Half-Half Sy Wr": "Shapesanity Half-Half Mixed", + "Checkered Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wr": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wr": "Shapesanity Stitched Mixed", + "3-1 Sy Wu": "Shapesanity Stitched Mixed", + "Half-Half Sy Wu": "Shapesanity Half-Half Mixed", + "Checkered Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wu": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wu": "Shapesanity Stitched Mixed", + "3-1 Sy Ww": "Shapesanity Stitched Mixed", + "Half-Half Sy Ww": "Shapesanity Half-Half Mixed", + "Checkered Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Ww": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Ww": "Shapesanity Stitched Mixed", + "3-1 Sy Wy": "Shapesanity Stitched Mixed", + "Half-Half Sy Wy": "Shapesanity Half-Half Mixed", + "Checkered Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent Singles Sy Wy": "Shapesanity Stitched Mixed", + "Cornered Singles Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Sy Wy": "Shapesanity Stitched Mixed", + "3-1 Wb Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cb": "Shapesanity Stitched Painted", + "3-1 Wb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cc": "Shapesanity Stitched Mixed", + "3-1 Wb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cg": "Shapesanity Stitched Painted", + "3-1 Wb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cp": "Shapesanity Stitched Mixed", + "3-1 Wb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cr": "Shapesanity Stitched Painted", + "3-1 Wb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Cu": "Shapesanity Stitched Painted", + "3-1 Wb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cw": "Shapesanity Stitched Mixed", + "3-1 Wb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Cy": "Shapesanity Stitched Mixed", + "3-1 Wb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rb": "Shapesanity Stitched Painted", + "3-1 Wb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rc": "Shapesanity Stitched Mixed", + "3-1 Wb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rg": "Shapesanity Stitched Painted", + "3-1 Wb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rp": "Shapesanity Stitched Mixed", + "3-1 Wb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Rr": "Shapesanity Stitched Painted", + "3-1 Wb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Ru": "Shapesanity Stitched Painted", + "3-1 Wb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Rw": "Shapesanity Stitched Mixed", + "3-1 Wb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Ry": "Shapesanity Stitched Mixed", + "3-1 Wb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sb": "Shapesanity Stitched Painted", + "3-1 Wb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sc": "Shapesanity Stitched Mixed", + "3-1 Wb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sg": "Shapesanity Stitched Painted", + "3-1 Wb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sp": "Shapesanity Stitched Mixed", + "3-1 Wb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Sr": "Shapesanity Stitched Painted", + "3-1 Wb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Su": "Shapesanity Stitched Painted", + "3-1 Wb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sw": "Shapesanity Stitched Mixed", + "3-1 Wb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Sy": "Shapesanity Stitched Mixed", + "3-1 Wb Wc": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wc": "Shapesanity East Windmill Mixed", + "Checkered Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wc": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wc": "Shapesanity Stitched Mixed", + "3-1 Wb Wg": "Shapesanity East Windmill Painted", + "Half-Half Wb Wg": "Shapesanity East Windmill Painted", + "Checkered Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wg": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wg": "Shapesanity Stitched Painted", + "3-1 Wb Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wp": "Shapesanity East Windmill Mixed", + "Checkered Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wp": "Shapesanity Stitched Mixed", + "3-1 Wb Wr": "Shapesanity East Windmill Painted", + "Half-Half Wb Wr": "Shapesanity East Windmill Painted", + "Checkered Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wr": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wr": "Shapesanity Stitched Painted", + "3-1 Wb Wu": "Shapesanity East Windmill Painted", + "Half-Half Wb Wu": "Shapesanity East Windmill Painted", + "Checkered Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wb Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wb Wu": "Shapesanity Stitched Painted", + "3-1 Wb Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wb Ww": "Shapesanity East Windmill Mixed", + "Checkered Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Ww": "Shapesanity Stitched Mixed", + "3-1 Wb Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wb Wy": "Shapesanity East Windmill Mixed", + "Checkered Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wb Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wb Wy": "Shapesanity Stitched Mixed", + "3-1 Wc Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cb": "Shapesanity Stitched Mixed", + "3-1 Wc Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cc": "Shapesanity Stitched Mixed", + "3-1 Wc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cg": "Shapesanity Stitched Mixed", + "3-1 Wc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cp": "Shapesanity Stitched Mixed", + "3-1 Wc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cr": "Shapesanity Stitched Mixed", + "3-1 Wc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cu": "Shapesanity Stitched Mixed", + "3-1 Wc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cw": "Shapesanity Stitched Mixed", + "3-1 Wc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Cy": "Shapesanity Stitched Mixed", + "3-1 Wc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rb": "Shapesanity Stitched Mixed", + "3-1 Wc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rc": "Shapesanity Stitched Mixed", + "3-1 Wc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rg": "Shapesanity Stitched Mixed", + "3-1 Wc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rp": "Shapesanity Stitched Mixed", + "3-1 Wc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rr": "Shapesanity Stitched Mixed", + "3-1 Wc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ru": "Shapesanity Stitched Mixed", + "3-1 Wc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Rw": "Shapesanity Stitched Mixed", + "3-1 Wc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ry": "Shapesanity Stitched Mixed", + "3-1 Wc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sb": "Shapesanity Stitched Mixed", + "3-1 Wc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sc": "Shapesanity Stitched Mixed", + "3-1 Wc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sg": "Shapesanity Stitched Mixed", + "3-1 Wc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sp": "Shapesanity Stitched Mixed", + "3-1 Wc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sr": "Shapesanity Stitched Mixed", + "3-1 Wc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Su": "Shapesanity Stitched Mixed", + "3-1 Wc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sw": "Shapesanity Stitched Mixed", + "3-1 Wc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Sy": "Shapesanity Stitched Mixed", + "3-1 Wc Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wb": "Shapesanity Stitched Mixed", + "3-1 Wc Wg": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wg": "Shapesanity East Windmill Mixed", + "Checkered Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wg": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wg": "Shapesanity Stitched Mixed", + "3-1 Wc Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wp": "Shapesanity East Windmill Mixed", + "Checkered Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wp": "Shapesanity Stitched Mixed", + "3-1 Wc Wr": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wr": "Shapesanity East Windmill Mixed", + "Checkered Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wr": "Shapesanity Stitched Mixed", + "3-1 Wc Wu": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wu": "Shapesanity East Windmill Mixed", + "Checkered Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wu": "Shapesanity Stitched Mixed", + "3-1 Wc Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wc Ww": "Shapesanity East Windmill Mixed", + "Checkered Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Ww": "Shapesanity Stitched Mixed", + "3-1 Wc Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wc Wy": "Shapesanity East Windmill Mixed", + "Checkered Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wc Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wc Wy": "Shapesanity Stitched Mixed", + "3-1 Wg Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cb": "Shapesanity Stitched Painted", + "3-1 Wg Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cc": "Shapesanity Stitched Mixed", + "3-1 Wg Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cg": "Shapesanity Stitched Painted", + "3-1 Wg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cp": "Shapesanity Stitched Mixed", + "3-1 Wg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cr": "Shapesanity Stitched Painted", + "3-1 Wg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Cu": "Shapesanity Stitched Painted", + "3-1 Wg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cw": "Shapesanity Stitched Mixed", + "3-1 Wg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Cy": "Shapesanity Stitched Mixed", + "3-1 Wg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rb": "Shapesanity Stitched Painted", + "3-1 Wg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rc": "Shapesanity Stitched Mixed", + "3-1 Wg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rg": "Shapesanity Stitched Painted", + "3-1 Wg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rp": "Shapesanity Stitched Mixed", + "3-1 Wg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Rr": "Shapesanity Stitched Painted", + "3-1 Wg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Ru": "Shapesanity Stitched Painted", + "3-1 Wg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Rw": "Shapesanity Stitched Mixed", + "3-1 Wg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Ry": "Shapesanity Stitched Mixed", + "3-1 Wg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sb": "Shapesanity Stitched Painted", + "3-1 Wg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sc": "Shapesanity Stitched Mixed", + "3-1 Wg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sg": "Shapesanity Stitched Painted", + "3-1 Wg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sp": "Shapesanity Stitched Mixed", + "3-1 Wg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Sr": "Shapesanity Stitched Painted", + "3-1 Wg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Su": "Shapesanity Stitched Painted", + "3-1 Wg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sw": "Shapesanity Stitched Mixed", + "3-1 Wg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Sy": "Shapesanity Stitched Mixed", + "3-1 Wg Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wb": "Shapesanity Stitched Painted", + "3-1 Wg Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wc": "Shapesanity Stitched Mixed", + "3-1 Wg Wp": "Shapesanity East Windmill Mixed", + "Half-Half Wg Wp": "Shapesanity East Windmill Mixed", + "Checkered Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Wp": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wp": "Shapesanity Stitched Mixed", + "3-1 Wg Wr": "Shapesanity East Windmill Painted", + "Half-Half Wg Wr": "Shapesanity East Windmill Painted", + "Checkered Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent Singles Wg Wr": "Shapesanity Colorful Half Painted", + "Cornered Singles Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wr": "Shapesanity Stitched Painted", + "3-1 Wg Wu": "Shapesanity East Windmill Painted", + "Half-Half Wg Wu": "Shapesanity East Windmill Painted", + "Checkered Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wg Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wg Wu": "Shapesanity Stitched Painted", + "3-1 Wg Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wg Ww": "Shapesanity East Windmill Mixed", + "Checkered Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Ww": "Shapesanity Stitched Mixed", + "3-1 Wg Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wg Wy": "Shapesanity East Windmill Mixed", + "Checkered Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wg Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wg Wy": "Shapesanity Stitched Mixed", + "3-1 Wp Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cb": "Shapesanity Stitched Mixed", + "3-1 Wp Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cc": "Shapesanity Stitched Mixed", + "3-1 Wp Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cg": "Shapesanity Stitched Mixed", + "3-1 Wp Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cp": "Shapesanity Stitched Mixed", + "3-1 Wp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cr": "Shapesanity Stitched Mixed", + "3-1 Wp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cu": "Shapesanity Stitched Mixed", + "3-1 Wp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cw": "Shapesanity Stitched Mixed", + "3-1 Wp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Cy": "Shapesanity Stitched Mixed", + "3-1 Wp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rb": "Shapesanity Stitched Mixed", + "3-1 Wp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rc": "Shapesanity Stitched Mixed", + "3-1 Wp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rg": "Shapesanity Stitched Mixed", + "3-1 Wp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rp": "Shapesanity Stitched Mixed", + "3-1 Wp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rr": "Shapesanity Stitched Mixed", + "3-1 Wp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ru": "Shapesanity Stitched Mixed", + "3-1 Wp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Rw": "Shapesanity Stitched Mixed", + "3-1 Wp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ry": "Shapesanity Stitched Mixed", + "3-1 Wp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sb": "Shapesanity Stitched Mixed", + "3-1 Wp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sc": "Shapesanity Stitched Mixed", + "3-1 Wp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sg": "Shapesanity Stitched Mixed", + "3-1 Wp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sp": "Shapesanity Stitched Mixed", + "3-1 Wp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sr": "Shapesanity Stitched Mixed", + "3-1 Wp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Su": "Shapesanity Stitched Mixed", + "3-1 Wp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sw": "Shapesanity Stitched Mixed", + "3-1 Wp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Sy": "Shapesanity Stitched Mixed", + "3-1 Wp Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wb": "Shapesanity Stitched Mixed", + "3-1 Wp Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wc": "Shapesanity Stitched Mixed", + "3-1 Wp Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wg": "Shapesanity Stitched Mixed", + "3-1 Wp Wr": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wr": "Shapesanity East Windmill Mixed", + "Checkered Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wr": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wr": "Shapesanity Stitched Mixed", + "3-1 Wp Wu": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wu": "Shapesanity East Windmill Mixed", + "Checkered Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wu": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wu": "Shapesanity Stitched Mixed", + "3-1 Wp Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wp Ww": "Shapesanity East Windmill Mixed", + "Checkered Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Ww": "Shapesanity Stitched Mixed", + "3-1 Wp Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wp Wy": "Shapesanity East Windmill Mixed", + "Checkered Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wp Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wp Wy": "Shapesanity Stitched Mixed", + "3-1 Wr Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cb": "Shapesanity Stitched Painted", + "3-1 Wr Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cc": "Shapesanity Stitched Mixed", + "3-1 Wr Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cg": "Shapesanity Stitched Painted", + "3-1 Wr Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cp": "Shapesanity Stitched Mixed", + "3-1 Wr Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cr": "Shapesanity Stitched Painted", + "3-1 Wr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Cu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Cu": "Shapesanity Stitched Painted", + "3-1 Wr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cw": "Shapesanity Stitched Mixed", + "3-1 Wr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Cy": "Shapesanity Stitched Mixed", + "3-1 Wr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rb": "Shapesanity Stitched Painted", + "3-1 Wr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rc": "Shapesanity Stitched Mixed", + "3-1 Wr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rg": "Shapesanity Stitched Painted", + "3-1 Wr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rp": "Shapesanity Stitched Mixed", + "3-1 Wr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Rr": "Shapesanity Stitched Painted", + "3-1 Wr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Ru": "Shapesanity Stitched Painted", + "3-1 Wr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Rw": "Shapesanity Stitched Mixed", + "3-1 Wr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Ry": "Shapesanity Stitched Mixed", + "3-1 Wr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sb": "Shapesanity Stitched Painted", + "3-1 Wr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sc": "Shapesanity Stitched Mixed", + "3-1 Wr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sg": "Shapesanity Stitched Painted", + "3-1 Wr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sp": "Shapesanity Stitched Mixed", + "3-1 Wr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Sr": "Shapesanity Stitched Painted", + "3-1 Wr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Su": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Su": "Shapesanity Stitched Painted", + "3-1 Wr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sw": "Shapesanity Stitched Mixed", + "3-1 Wr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Sy": "Shapesanity Stitched Mixed", + "3-1 Wr Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wb": "Shapesanity Stitched Painted", + "3-1 Wr Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wc": "Shapesanity Stitched Mixed", + "3-1 Wr Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wg": "Shapesanity Stitched Painted", + "3-1 Wr Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wp": "Shapesanity Stitched Mixed", + "3-1 Wr Wu": "Shapesanity East Windmill Painted", + "Half-Half Wr Wu": "Shapesanity East Windmill Painted", + "Checkered Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent Singles Wr Wu": "Shapesanity Colorful Half Painted", + "Cornered Singles Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1 Wr Wu": "Shapesanity Stitched Painted", + "3-1 Wr Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wr Ww": "Shapesanity East Windmill Mixed", + "Checkered Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wr Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Ww": "Shapesanity Stitched Mixed", + "3-1 Wr Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wr Wy": "Shapesanity East Windmill Mixed", + "Checkered Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wr Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wr Wy": "Shapesanity Stitched Mixed", + "3-1 Wu Cb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cb": "Shapesanity Stitched Painted", + "3-1 Wu Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cc": "Shapesanity Stitched Mixed", + "3-1 Wu Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cg": "Shapesanity Stitched Painted", + "3-1 Wu Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cp": "Shapesanity Stitched Mixed", + "3-1 Wu Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Cr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Cr": "Shapesanity Stitched Painted", + "3-1 Wu Cu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Cu": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Cu": "Shapesanity Stitched Uncolored", + "3-1 Wu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cw": "Shapesanity Stitched Mixed", + "3-1 Wu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Cy": "Shapesanity Stitched Mixed", + "3-1 Wu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rb": "Shapesanity Stitched Painted", + "3-1 Wu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rc": "Shapesanity Stitched Mixed", + "3-1 Wu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rg": "Shapesanity Stitched Painted", + "3-1 Wu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rp": "Shapesanity Stitched Mixed", + "3-1 Wu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Rr": "Shapesanity Stitched Painted", + "3-1 Wu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Ru": "Shapesanity Stitched Uncolored", + "3-1 Wu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Rw": "Shapesanity Stitched Mixed", + "3-1 Wu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Ry": "Shapesanity Stitched Mixed", + "3-1 Wu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sb": "Shapesanity Stitched Painted", + "3-1 Wu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sc": "Shapesanity Stitched Mixed", + "3-1 Wu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sg": "Shapesanity Stitched Painted", + "3-1 Wu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sp": "Shapesanity Stitched Mixed", + "3-1 Wu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1 Wu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Sr": "Shapesanity Stitched Painted", + "3-1 Wu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1 Wu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1 Wu Su": "Shapesanity Stitched Uncolored", + "3-1 Wu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sw": "Shapesanity Stitched Mixed", + "3-1 Wu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Sy": "Shapesanity Stitched Mixed", + "3-1 Wu Wb": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wb": "Shapesanity Stitched Painted", + "3-1 Wu Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wc": "Shapesanity Stitched Mixed", + "3-1 Wu Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wg": "Shapesanity Stitched Painted", + "3-1 Wu Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wp": "Shapesanity Stitched Mixed", + "3-1 Wu Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1 Wu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1 Wu Wr": "Shapesanity Stitched Painted", + "3-1 Wu Ww": "Shapesanity East Windmill Mixed", + "Half-Half Wu Ww": "Shapesanity East Windmill Mixed", + "Checkered Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wu Ww": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Ww": "Shapesanity Stitched Mixed", + "3-1 Wu Wy": "Shapesanity East Windmill Mixed", + "Half-Half Wu Wy": "Shapesanity East Windmill Mixed", + "Checkered Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Wu Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wu Wy": "Shapesanity Stitched Mixed", + "3-1 Ww Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cb": "Shapesanity Stitched Mixed", + "3-1 Ww Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cc": "Shapesanity Stitched Mixed", + "3-1 Ww Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cg": "Shapesanity Stitched Mixed", + "3-1 Ww Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cp": "Shapesanity Stitched Mixed", + "3-1 Ww Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cr": "Shapesanity Stitched Mixed", + "3-1 Ww Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cu": "Shapesanity Stitched Mixed", + "3-1 Ww Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cw": "Shapesanity Stitched Mixed", + "3-1 Ww Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Cy": "Shapesanity Stitched Mixed", + "3-1 Ww Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rb": "Shapesanity Stitched Mixed", + "3-1 Ww Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rc": "Shapesanity Stitched Mixed", + "3-1 Ww Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rg": "Shapesanity Stitched Mixed", + "3-1 Ww Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rp": "Shapesanity Stitched Mixed", + "3-1 Ww Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rr": "Shapesanity Stitched Mixed", + "3-1 Ww Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Ru": "Shapesanity Stitched Mixed", + "3-1 Ww Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Rw": "Shapesanity Stitched Mixed", + "3-1 Ww Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Ry": "Shapesanity Stitched Mixed", + "3-1 Ww Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sb": "Shapesanity Stitched Mixed", + "3-1 Ww Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sc": "Shapesanity Stitched Mixed", + "3-1 Ww Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sg": "Shapesanity Stitched Mixed", + "3-1 Ww Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sp": "Shapesanity Stitched Mixed", + "3-1 Ww Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sr": "Shapesanity Stitched Mixed", + "3-1 Ww Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Su": "Shapesanity Stitched Mixed", + "3-1 Ww Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sw": "Shapesanity Stitched Mixed", + "3-1 Ww Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Sy": "Shapesanity Stitched Mixed", + "3-1 Ww Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wb": "Shapesanity Stitched Mixed", + "3-1 Ww Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wc": "Shapesanity Stitched Mixed", + "3-1 Ww Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wg": "Shapesanity Stitched Mixed", + "3-1 Ww Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wp": "Shapesanity Stitched Mixed", + "3-1 Ww Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wr": "Shapesanity Stitched Mixed", + "3-1 Ww Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Ww Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wu": "Shapesanity Stitched Mixed", + "3-1 Ww Wy": "Shapesanity East Windmill Mixed", + "Half-Half Ww Wy": "Shapesanity East Windmill Mixed", + "Checkered Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent Singles Ww Wy": "Shapesanity Colorful Half Mixed", + "Cornered Singles Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Ww Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Ww Wy": "Shapesanity Stitched Mixed", + "3-1 Wy Cb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cb": "Shapesanity Stitched Mixed", + "3-1 Wy Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cc": "Shapesanity Stitched Mixed", + "3-1 Wy Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cg": "Shapesanity Stitched Mixed", + "3-1 Wy Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cp": "Shapesanity Stitched Mixed", + "3-1 Wy Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cr": "Shapesanity Stitched Mixed", + "3-1 Wy Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cu": "Shapesanity Stitched Mixed", + "3-1 Wy Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cw": "Shapesanity Stitched Mixed", + "3-1 Wy Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Cy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Cy": "Shapesanity Stitched Mixed", + "3-1 Wy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rb": "Shapesanity Stitched Mixed", + "3-1 Wy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rc": "Shapesanity Stitched Mixed", + "3-1 Wy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rg": "Shapesanity Stitched Mixed", + "3-1 Wy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rp": "Shapesanity Stitched Mixed", + "3-1 Wy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rr": "Shapesanity Stitched Mixed", + "3-1 Wy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ru": "Shapesanity Stitched Mixed", + "3-1 Wy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Rw": "Shapesanity Stitched Mixed", + "3-1 Wy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ry": "Shapesanity Stitched Mixed", + "3-1 Wy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sb": "Shapesanity Stitched Mixed", + "3-1 Wy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sc": "Shapesanity Stitched Mixed", + "3-1 Wy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sg": "Shapesanity Stitched Mixed", + "3-1 Wy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sp": "Shapesanity Stitched Mixed", + "3-1 Wy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sr": "Shapesanity Stitched Mixed", + "3-1 Wy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Su": "Shapesanity Stitched Mixed", + "3-1 Wy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sw": "Shapesanity Stitched Mixed", + "3-1 Wy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1 Wy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Sy": "Shapesanity Stitched Mixed", + "3-1 Wy Wb": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wb": "Shapesanity Stitched Mixed", + "3-1 Wy Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wc": "Shapesanity Stitched Mixed", + "3-1 Wy Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wg": "Shapesanity Stitched Mixed", + "3-1 Wy Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wp": "Shapesanity Stitched Mixed", + "3-1 Wy Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wr": "Shapesanity Stitched Mixed", + "3-1 Wy Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Wu": "Shapesanity Stitched Mixed", + "3-1 Wy Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1 Wy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1 Wy Ww": "Shapesanity Stitched Mixed", +} + +shapesanity_three_parts = { + "Adjacent 2-1-1 Cb Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cc Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cg Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cg Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cg Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cb Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cb Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Rr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Ru": "Shapesanity Stitched Painted", + "Singles Cb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cb Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cb Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Rg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Rr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rb Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cg Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cc Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cc Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cb Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cp Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cg Cr Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cg Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Rr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Ru": "Shapesanity Stitched Painted", + "Singles Cg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cg Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Rr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Ru": "Shapesanity Stitched Painted", + "Singles Cg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Cu Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cg Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Rg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Rr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rb Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rg Rr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rg Ru": "Shapesanity Stitched Painted", + "Singles Cg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cr Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cp Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cp Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cb Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Cu": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cr Cg Cu": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cr Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cr Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cu Cy": "Shapesanity Colorful Full Mixed", + "Singles Cr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cr Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Rg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Rr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rb Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rg Rr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rg Ru": "Shapesanity Stitched Painted", + "Singles Cr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cb Cg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cb Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Cr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Cu Cg Cr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Cu Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cu Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cu Cw Cy": "Shapesanity Colorful Full Mixed", + "Singles Cu Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Rg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Rr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rb Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rg Rr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rg Ru": "Shapesanity Stitched Painted", + "Singles Cu Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Ru Su": "Shapesanity Stitched Uncolored", + "Singles Cu Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Ru Wu": "Shapesanity Stitched Uncolored", + "Singles Cu Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Cu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Cu Su Wu": "Shapesanity Stitched Uncolored", + "Singles Cu Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Cu Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cu Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cb Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cc Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cg Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cp Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cr Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cr Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Cy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cw Cu Cy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Cc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cb Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Cg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cc Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Cp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cg Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Cr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cp Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Cu": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cr Cu": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cr Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cr Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Cw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Cy Cu Cw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Cy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rb Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Cy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rc Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rg Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rg Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rg Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rb Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rb Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Rb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Rb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rb Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rb Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Rb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Rb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rg Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rc Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rc Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rb Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rp Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rg Rr Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rg Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Rg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Rg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rg Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Rg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Rg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rg Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Rg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Rg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Rg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rr Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rp Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rp Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Rg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rb Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Ru": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Rr Rg Ru": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Rr Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rr Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Ru Ry": "Shapesanity Colorful Full Mixed", + "Singles Rr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rr Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Rr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Rr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Rr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Rr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Ru Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Ru Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Rg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rb Rg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rb Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Rr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Ru Rg Rr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Ru Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ru Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ru Rw Ry": "Shapesanity Colorful Full Mixed", + "Singles Ru Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Ru Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Ru Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Ru Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Ru Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Su Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Ru Su Wu": "Shapesanity Stitched Uncolored", + "Singles Ru Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ru Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rb Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rc Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rg Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rp Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rr Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Rr Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Ry": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Rw Ru Ry": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Rw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Rw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Rc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rb Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Rg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rc Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Rp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rg Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Rr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Rr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rp Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Ru": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rr Ru": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rr Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Rr Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Rw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Ry Ru Rw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Ry Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Rw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ry Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sc Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sg Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sg Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sg Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sb Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sb Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Sb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Sb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Sb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Sb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sb Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sb Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sb Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Sb Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Sb Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sb Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sb Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sb Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sb Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sb Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sg Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sc Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sc Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sc Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sb Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sp Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sg Sr Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sg Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Sg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Sg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Sg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Sg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sg Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Sg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Sg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Sg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Sg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sg Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Sg Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Sg Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Sg Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Sg Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sg Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sr Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sp Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sp Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sp Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Sg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sb Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Su": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Sr Sg Su": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Sr Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sr Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Su Sy": "Shapesanity Colorful Full Mixed", + "Singles Sr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sr Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Sr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Sr Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Sr Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Sr Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Sr Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sr Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Cu Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Cu Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Ru Wu": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Su Ru Wu": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Su Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sg": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sb Sg": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sb Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Sr": "Shapesanity Colorful Full Painted", + "Cornered 2-1-1 Su Sg Sr": "Shapesanity Colorful Full Painted", + "Adjacent 2-1-1 Su Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Su Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Su Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Su Sw Sy": "Shapesanity Colorful Full Mixed", + "Singles Su Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Su Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Su Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Su Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Su Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Su Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Su Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Su Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Su Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Su Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Su Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Su Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Su Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Su Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Su Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Su Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Su Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Su Wb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Su Wg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Su Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Su Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sb Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sc Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sg Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sp Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sr Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Sr Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Sy": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sw Su Sy": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sw Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Su Wy": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sw Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sw Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Sc": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sc": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sb Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Sg": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sg": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sc Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Sp": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sp": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sg Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Sr": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Sr": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sp Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Su": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sr Su": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sr Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Sr Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Sw": "Shapesanity Colorful Full Mixed", + "Cornered 2-1-1 Sy Su Sw": "Shapesanity Colorful Full Mixed", + "Adjacent 2-1-1 Sy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Sy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Sy Ww Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wb Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wb Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wb Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wb Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wb Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wb Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wg Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wr Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wb Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wb Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wb Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wb Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wc Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wc Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wc Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wc Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wc Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wg Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wg Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wg Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wg Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wg Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wg Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wb Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wr Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wg Wr Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wg Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wg Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wg Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wp Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wp Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wp Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wp Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wp Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Cu Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Rr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Ru Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sb Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sg Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wr Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Sr Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wu": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wr Su Wu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wr Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wr Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wr Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wr Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wg": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wb Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wu": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wr Wg Wu": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wr Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wu Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wr Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wr Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cb Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cg Cr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cg Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Cu": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Cr Cu": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Ru": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Rr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Ru": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Cu Ru": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Cu Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Cu Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Rg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rb Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rg Rr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rg Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Rr Ru": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Su": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Rr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Su": "Shapesanity Stitched Uncolored", + "Cornered 2-1-1 Wu Ru Su": "Shapesanity Stitched Uncolored", + "Adjacent 2-1-1 Wu Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Ru Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Sg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sb Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sb Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sg Sr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sg Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sg Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Cornered 2-1-1 Wu Sr Su": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Sr Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wb": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wb": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wg": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wg": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wr": "Shapesanity Stitched Painted", + "Cornered 2-1-1 Wu Su Wr": "Shapesanity Stitched Painted", + "Adjacent 2-1-1 Wu Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wu Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wu Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wu Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wg": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wb Wg": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wb Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wr": "Shapesanity East Windmill Painted", + "Cornered 2-1-1 Wu Wg Wr": "Shapesanity East Windmill Painted", + "Adjacent 2-1-1 Wu Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wu Ww Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wu Ww Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cu Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cu Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Cy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Cy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ru Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ru Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Rw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Rw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Ry Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Ry Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sb Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sb Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sc Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sc Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sg Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sg Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sp Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sp Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sr Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sr Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Su Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Su Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Ww Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sw Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sw Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Sy Wy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Ww Sy Wy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Ww Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wb Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wb Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wc Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wc Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wg Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wg Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wp Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wp Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wr Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wr Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Ww Wu Wy": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Ww Wu Wy": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Cb Cc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cb Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cc Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cg Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cp Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cu": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cr Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Cw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cu Cw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cu Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cu Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cu Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Cy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Cw Cy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ru": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Rw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ry": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Cy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Cy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rb Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rc Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rg Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Rr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rp Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Ru": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rr Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Ru Rw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Ru Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ru Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ru Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Rw Ry": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Rw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Rw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Su": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sw": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Sy": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Ry Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Ry Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sb Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sb Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sb Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sc Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sc Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sc Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sg Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sg Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sg Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sp Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sp Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sp Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Su": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sr Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sr Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sr Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Su Sw": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Su Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Su Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Su Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Cornered 2-1-1 Wy Sw Sy": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sw Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sw Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wb": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wb": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wc": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wc": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wg": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wg": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wp": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wp": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wr": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wr": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Wu": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Wu": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Sy Ww": "Shapesanity Stitched Mixed", + "Cornered 2-1-1 Wy Sy Ww": "Shapesanity Stitched Mixed", + "Adjacent 2-1-1 Wy Wb Wc": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wc": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wb Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wb Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wg": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wg": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wc Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wc Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wp": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wp": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wg Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wg Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Wr": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Wr": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wp Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wp Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wr Wu": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wr Wu": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wr Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wr Ww": "Shapesanity East Windmill Mixed", + "Adjacent 2-1-1 Wy Wu Ww": "Shapesanity East Windmill Mixed", + "Cornered 2-1-1 Wy Wu Ww": "Shapesanity East Windmill Mixed", +} + +shapesanity_four_parts = { + "Singles Cb Cc Cg Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cb Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cb Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cc Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Cu Rb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Rg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Rr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Ru": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cg Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cg Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cp Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Rg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rb Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Rr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rg Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Ru": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Cu Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cu Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cu Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Cr Cu Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cu Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cr Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ru": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Rw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ry": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Cy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cu Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Rr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Ru": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Rr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Ru Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Cu Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Cu Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cu Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cu Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Rc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rb Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Rg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Rp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Rr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Ru": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Rw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ru Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Ry": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Cy Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Cy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Cy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Cw Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Rr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ru": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Rw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Ry": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ru Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ru Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Rw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Rw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Ry Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Ry Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Cy Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Cy Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rb Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rb Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rc Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Ru Sb": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sg": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sr": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Su": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rg Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rg Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ru Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rp Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Su": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Rw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sg": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sb Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Sr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sg Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Su": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Ru Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ru Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ru Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Rr Ru Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ru Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rr Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Rr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Rr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Su": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sw": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Sy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Ry Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Rw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Rw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Rw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Ru Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sb Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Su": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sg Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Sr Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wg": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wr": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Su Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Ru Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Ru Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ru Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ru Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Sc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sb Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Sg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Sp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Sr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Su": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Sw": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Su Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Sy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Ry Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Ry Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Ry Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Rw Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Rw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Rw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Su": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Sw": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Sy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Su Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Su Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sw Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sw Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wc": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wb Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Sy Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Sy Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Ry Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Ry Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sc Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sc Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sc Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sb Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sb Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sb Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sb Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sb Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sb Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sb Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sb Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sb Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sg Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sg Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sg Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sc Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sc Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sc Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sc Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sc Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Su Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sp Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sp Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sp Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Su Wb": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wg": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wr": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Wu": "Shapesanity Stitched Painted", + "Singles Sg Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sg Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sg Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sg Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sg Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sg Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sg Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sg Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sg Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Su Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sr Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sr Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sr Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sp Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sp Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sp Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sp Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sp Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wb": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wg": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wr": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wu": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Sw Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Su Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Su Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wg": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wr": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wg Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wr Wu": "Shapesanity Colorful Half-Half Painted", + "Singles Sr Su Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Su Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Sr Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Sr Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sr Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Sr Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Sr Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sr Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sr Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wb": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wc": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wg": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wp": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wr": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wu": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Ww": "Shapesanity Stitched Mixed", + "Singles Su Sw Sy Wy": "Shapesanity Stitched Mixed", + "Singles Su Sw Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sw Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Su Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wr": "Shapesanity Stitched Painted", + "Singles Su Wb Wg Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr Wu": "Shapesanity Stitched Painted", + "Singles Su Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Su Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Su Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Su Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Sy Wb Wc": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wb Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wg": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wc Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wp": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wg Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wr": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wp Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Wu": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wr Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wu Ww": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Wu Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Sy Ww Wy": "Shapesanity Colorful Half-Half Mixed", + "Singles Sw Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sw Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sw Wu Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wg": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wc Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wb Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wb Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wp": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wg Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wc Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wc Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wr": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wp Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wg Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wg Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Wu": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wr Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wp Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wp Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu Ww": "Shapesanity Stitched Mixed", + "Singles Sy Wr Wu Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wr Ww Wy": "Shapesanity Stitched Mixed", + "Singles Sy Wu Ww Wy": "Shapesanity Stitched Mixed", +} diff --git a/worlds/shapez/data/strings.py b/worlds/shapez/data/strings.py new file mode 100644 index 000000000000..261ca5317e14 --- /dev/null +++ b/worlds/shapez/data/strings.py @@ -0,0 +1,337 @@ + +class OTHER: + game_name = "shapez" + + +class SLOTDATA: + goal = "goal" + maxlevel = "maxlevel" + finaltier = "finaltier" + req_shapes_mult = "required_shapes_multiplier" + allow_float_layers = "allow_floating_layers" + rand_level_req = "randomize_level_requirements" + rand_upgrade_req = "randomize_upgrade_requirements" + rand_level_logic = "randomize_level_logic" + rand_upgrade_logic = "randomize_upgrade_logic" + throughput_levels_ratio = "throughput_levels_ratio" + comp_growth_gradient = "complexity_growth_gradient" + same_late = "same_late_upgrade_requirements" + toolbar_shuffling = "toolbar_shuffling" + seed = "seed" + shapesanity = "shapesanity" + + @staticmethod + def level_building(number: int) -> str: + return f"Level building {number}" + + @staticmethod + def upgrade_building(number: int) -> str: + return f"Upgrade building {number}" + + @staticmethod + def phase_length(number: int) -> str: + return f"Phase {number} length" + + @staticmethod + def cat_buildings_amount(category: str) -> str: + return f"{category} category buildings amount" + + +class GOALS: + vanilla = "vanilla" + mam = "mam" + even_fasterer = "even_fasterer" + efficiency_iii = "efficiency_iii" + + +class CATEGORY: + belt = "Belt" + miner = "Miner" + processors = "Processors" + painting = "Painting" + random = "Random" + belt_low = "belt" + miner_low = "miner" + processors_low = "processors" + painting_low = "painting" + big = "Big" + small = "Small" + gigantic = "Gigantic" + rising = "Rising" + demonic = "Demonic" + + +class OPTIONS: + logic_vanilla = "vanilla" + logic_stretched = "stretched" + logic_quick = "quick" + logic_random_steps = "random_steps" + logic_hardcore = "hardcore" + logic_dopamine = "dopamine" + logic_dopamine_overflow = "dopamine_overflow" + logic_vanilla_like = "vanilla_like" + logic_linear = "linear" + logic_category = "category" + logic_category_random = "category_random" + logic_shuffled = "shuffled" + sphere_1 = "sphere_1" + buildings_3 = "3_buildings" + buildings_5 = "5_buildings" + + +class REGIONS: + menu = "Menu" + belt = "Shape transportation" + extract = "Shape extraction" + main = "Main" + levels_1 = "Levels with 1 building" + levels_2 = "Levels with 2 buildings" + levels_3 = "Levels with 3 buildings" + levels_4 = "Levels with 4 buildings" + levels_5 = "Levels with 5 buildings" + upgrades_1 = "Upgrades with 1 building" + upgrades_2 = "Upgrades with 2 buildings" + upgrades_3 = "Upgrades with 3 buildings" + upgrades_4 = "Upgrades with 4 buildings" + upgrades_5 = "Upgrades with 5 buildings" + paint_not_quad = "Achievements with (double) painter" + cut_not_quad = "Achievements with half cutter" + rotate_cw = "Achievements with clockwise rotator" + stack_shape = "Achievements with stacker" + store_shape = "Achievements with storage" + trash_shape = "Achievements with trash" + blueprint = "Achievements with blueprints" + wiring = "Achievements with wires" + mam = "Achievements needing a MAM" + any_building = "Achievements with any placeable building" + all_buildings = "Achievements with all main buildings" + all_buildings_x1_6_belt = "Achievements with x1.6 belt speed" + full = "Full" + half = "Half" + piece = "Piece" + stitched = "Stitched" + east_wind = "East Windmill" + half_half = "Half-Half" + col_east_wind = "Colorful East Windmill" + col_half_half = "Colorful Half-Half" + col_full = "Colorful Full" + col_half = "Colorful Half" + uncol = "Uncolored" + painted = "Painted" + mixed = "Mixed" + + @staticmethod + def sanity(processing: str, coloring: str): + return f"Shapesanity {processing} {coloring}" + + +class LOCATIONS: + my_eyes = "My eyes no longer hurt" + painter = "Painter" + cutter = "Cutter" + rotater = "Rotater" + wait_they_stack = "Wait, they stack?" + wires = "Wires" + storage = "Storage" + freedom = "Freedom" + the_logo = "The logo!" + to_the_moon = "To the moon" + its_piling_up = "It's piling up" + use_it_later = "I'll use it later" + efficiency_1 = "Efficiency 1" + preparing_to_launch = "Preparing to launch" + spacey = "SpaceY" + stack_overflow = "Stack overflow" + its_a_mess = "It's a mess" + faster = "Faster" + even_faster = "Even faster" + get_rid_of_them = "Get rid of them" + a_long_time = "It's been a long time" + addicted = "Addicted" + cant_stop = "Can't stop" + is_this_the_end = "Is this the end?" + getting_into_it = "Getting into it" + now_its_easy = "Now it's easy" + computer_guy = "Computer Guy" + speedrun_master = "Speedrun Master" + speedrun_novice = "Speedrun Novice" + not_idle_game = "Not an idle game" + efficiency_2 = "Efficiency 2" + branding_1 = "Branding specialist 1" + branding_2 = "Branding specialist 2" + king_of_inefficiency = "King of Inefficiency" + its_so_slow = "It's so slow" + mam = "MAM (Make Anything Machine)" + perfectionist = "Perfectionist" + next_dimension = "The next dimension" + oops = "Oops" + copy_pasta = "Copy-Pasta" + ive_seen_that_before = "I've seen that before ..." + memories = "Memories from the past" + i_need_trains = "I need trains" + a_bit_early = "A bit early?" + gps = "GPS" + goal = "Goal" + + @staticmethod + def level(number: int, additional: int = 0) -> str: + if not additional: + return f"Level {number}" + elif additional == 1: + return f"Level {number} Additional" + else: + return f"Level {number} Additional {additional}" + + @staticmethod + def upgrade(category: str, tier: str) -> str: + return f"{category} Upgrade Tier {tier}" + + @staticmethod + def shapesanity(number: int) -> str: + return f"Shapesanity {number}" + + +class ITEMS: + cutter = "Cutter" + cutter_quad = "Quad Cutter" + rotator = "Rotator" + rotator_ccw = "Rotator (CCW)" + rotator_180 = "Rotator (180°)" + stacker = "Stacker" + painter = "Painter" + painter_double = "Double Painter" + painter_quad = "Quad Painter" + color_mixer = "Color Mixer" + + belt = "Belt" + extractor = "Extractor" + extractor_chain = "Chaining Extractor" + balancer = "Balancer" + comp_merger = "Compact Merger" + comp_splitter = "Compact Splitter" + tunnel = "Tunnel" + tunnel_tier_ii = "Tunnel Tier II" + trash = "Trash" + + belt_reader = "Belt Reader" + storage = "Storage" + switch = "Switch" + item_filter = "Item Filter" + display = "Display" + wires = "Wires" + const_signal = "Constant Signal" + logic_gates = "Logic Gates" + virtual_proc = "Virtual Processing" + blueprints = "Blueprints" + + upgrade_big_belt = "Big Belt Upgrade" + upgrade_big_miner = "Big Miner Upgrade" + upgrade_big_proc = "Big Processors Upgrade" + upgrade_big_paint = "Big Painting Upgrade" + upgrade_small_belt = "Small Belt Upgrade" + upgrade_small_miner = "Small Miner Upgrade" + upgrade_small_proc = "Small Processors Upgrade" + upgrade_small_paint = "Small Painting Upgrade" + upgrade_gigantic_belt = "Gigantic Belt Upgrade" + upgrade_gigantic_miner = "Gigantic Miner Upgrade" + upgrade_gigantic_proc = "Gigantic Processors Upgrade" + upgrade_gigantic_paint = "Gigantic Painting Upgrade" + upgrade_rising_belt = "Rising Belt Upgrade" + upgrade_rising_miner = "Rising Miner Upgrade" + upgrade_rising_proc = "Rising Processors Upgrade" + upgrade_rising_paint = "Rising Painting Upgrade" + trap_upgrade_belt = "Belt Upgrade Trap" + trap_upgrade_miner = "Miner Upgrade Trap" + trap_upgrade_proc = "Processors Upgrade Trap" + trap_upgrade_paint = "Painting Upgrade Trap" + trap_upgrade_demonic_belt = "Demonic Belt Upgrade Trap" + trap_upgrade_demonic_miner = "Demonic Miner Upgrade Trap" + trap_upgrade_demonic_proc = "Demonic Processors Upgrade Trap" + trap_upgrade_demonic_paint = "Demonic Painting Upgrade Trap" + upgrade_big_random = "Big Random Upgrade" + upgrade_small_random = "Small Random Upgrade" + + @staticmethod + def upgrade(size: str, category: str) -> str: + return f"{size} {category} Upgrade" + + @staticmethod + def trap_upgrade(category: str, size: str = "") -> str: + return f"{size} {category} Upgrade Trap".strip() + + bundle_blueprint = "Blueprint Shapes Bundle" + bundle_level = "Level Shapes Bundle" + bundle_upgrade = "Upgrade Shapes Bundle" + + trap_locked = "Locked Building Trap" + trap_throttled = "Throttled Building Trap" + trap_malfunction = "Malfunctioning Trap" + trap_inflation = "Inflation Trap" + trap_draining_inv = "Inventory Draining Trap" + trap_draining_blueprint = "Blueprint Shapes Draining Trap" + trap_draining_level = "Level Shapes Draining Trap" + trap_draining_upgrade = "Upgrade Shapes Draining Trap" + trap_clear_belts = "Belts Clearing Trap" + + goal = "Goal" + + +class SHAPESANITY: + circle = "Circle" + square = "Square" + star = "Star" + windmill = "Windmill" + red = "Red" + blue = "Blue" + green = "Green" + yellow = "Yellow" + purple = "Purple" + cyan = "Cyan" + white = "White" + uncolored = "Uncolored" + adjacent_pos = "Adjacent" + cornered_pos = "Cornered" + + @staticmethod + def full(color: str, subshape: str): + return f"{color} {subshape}" + + @staticmethod + def half(color: str, subshape: str): + return f"Half {color} {subshape}" + + @staticmethod + def piece(color: str, subshape: str): + return f"{color} {subshape} Piece" + + @staticmethod + def cutout(color: str, subshape: str): + return f"Cut Out {color} {subshape}" + + @staticmethod + def cornered(color: str, subshape: str): + return f"Cornered {color} {subshape}" + + @staticmethod + def three_one(first: str, second: str): + return f"3-1 {first} {second}" + + @staticmethod + def halfhalf(combo: str): + return f"Half-Half {combo}" + + @staticmethod + def checkered(combo: str): + return f"Checkered {combo}" + + @staticmethod + def singles(combo: str, position: str = ""): + return f"{position} Singles {combo}".strip() + + @staticmethod + def two_one(first: str, second: str, position: str): + return f"{position} 2-1 {first} {second}" + + @staticmethod + def two_one_one(first: str, second: str, position: str): + return f"{position} 2-1-1 {first} {second}" diff --git a/worlds/shapez/docs/datapackage_settings_de.md b/worlds/shapez/docs/datapackage_settings_de.md new file mode 100644 index 000000000000..ae375f3e3c66 --- /dev/null +++ b/worlds/shapez/docs/datapackage_settings_de.md @@ -0,0 +1,35 @@ +# Anleitung zum Ändern der maximalen Anzahl an Locations in shapez + +## Wo finde ich die Einstellungen zum Erhöhen/Verringern der maximalen Anzahl an Locations? + +Die Maximalwerte von `goal_amount` und `shapesanity_amount` sind fest eingebaute Einstellungen, die das Datenpaket des +Spiels beeinflussen. Sie sind in einer Datei names `options.json` innerhalb der APWorld festgelegt. Durch das Ändern +dieser Werte erschaffst du eine custom APWorld, die nur auf deinem PC existiert. + +## Wie du die Datenpaket-Einstellungen änderst + +Diese Anleitung ist für erfahrene Nutzer und kann in nicht richtig funktionierender Software resultieren, wenn sie nicht +ordnungsgemäß befolgt wird. Anwendung auf eigene Gefahr. + +1. Navigiere zu `/lib/worlds`. +2. Benenne `shapez.apworld` zu `shapez.zip` um. +3. Öffne die Zip-Datei und navigiere zu `shapez/data/options.json`. +4. Ändere die Werte in dieser Datei nach Belieben und speichere die Datei. + - `max_shapesanity` kann nicht weniger als `4` sein, da dies die benötigte Mindestanzahl zum Verhindern von + FillErrors ist. + - `max_shapesanity` kann auch nicht mehr als `75800` sein, da dies die maximale Anzahl an möglichen Shapesanity-Namen + ist. Ansonsten könnte die Generierung der Multiworld fehlschlagen. + - `max_levels_and_upgrades` kann nicht weniger als `27` sein, da dies die Mindestanzahl für das `mam`-Ziel ist. +5. Schließe die Zip-Datei und benenne sie zurück zu `shapez.apworld`. + +## Warum muss ich das ganze selbst machen? + +Alle Spiele in Archipelago müssen eine Liste aller möglichen Locations **unabhängig der Spieler-Optionen** +bereitstellen. Diese Listen aller in einer Multiworld inkludierten Spiele werden in den Daten der Multiworld gespeichert +und an alle verbundenen Clients gesendet. Je mehr mögliche Locations, desto größer das Datenpaket. Und mit ~80000 +möglichen Locations hatte shapez zu einem gewissen Zeitpunkt ein (von der Datenmenge her) größeres Datenpaket als alle +supporteten Spiele zusammen. Um also diese Datenmenge zu reduzieren wurden die ausgeschriebenen +Shapesanity-Locations-Namen (`Shapesanity Uncolored Circle`, `Shapesanity Blue Rectangle`, ...) durch standardisierte +Namen (`Shapesanity 1`, `Shapesanity 2`, ...) ersetzt. Durch das Ändern dieser Maximalwerte, und damit das Erstellen +einer custom APWorld, kannst du die Anzahl der möglichen Locations erhöhen, wirst aber auch gleichzeitig das Datenpaket +vergrößern. diff --git a/worlds/shapez/docs/datapackage_settings_en.md b/worlds/shapez/docs/datapackage_settings_en.md new file mode 100644 index 000000000000..fd0ed1673d9e --- /dev/null +++ b/worlds/shapez/docs/datapackage_settings_en.md @@ -0,0 +1,33 @@ +# Guide to change maximum locations in shapez + +## Where do I find the settings to increase/decrease the amount of possible locations? + +The maximum values of the `goal_amount` and `shapesanity_amount` are hardcoded settings that affect the datapackage. +They are stored in a file called `options.json` inside the apworld. By changing them, you will create a custom apworld +on your local machine. + +## How to change datapackage options + +This tutorial is for advanced users and can result in the software not working properly, if not read carefully. +Proceed at your own risk. + +1. Go to `/lib/worlds`. +2. Rename `shapez.apworld` to `shapez.zip`. +3. Open the zip file and go to `shapez/data/options.json`. +4. Edit the values in this file to your desire and save the file. + - `max_shapesanity` cannot be lower than `4`, as this is the minimum amount to prevent FillErrors. + - `max_shapesanity` also cannot be higher than `75800`, as this is the maximum amount of possible shapesanity names. + Else the multiworld generation might fail. + - `max_levels_and_upgrades` cannot be lower than `27`, as this is the minimum amount for the `mam` goal to properly + work. +5. Close the zip and rename it back to `shapez.apworld`. + +## Why do I have to do this manually? + +For every game in Archipelago, there must be a list of all possible locations, **regardless of player options**. When +generating a multiworld, a list of all locations of all included games will be saved in the multiworld data and sent to +all clients. The higher the amount of possible locations, the bigger the datapackage. And having ~80000 possible +locations at one point made the datapackage for shapez bigger than all other supported games combined. So to reduce the +datapackage of shapez, the locations for shapesanity are named `Shapesanity 1`, `Shapesanity 2` etc. instead of their +actual names. By creating a custom apworld, you can increase the amount of possible locations, but you will also +increase the size of the datapackage at the same time. diff --git a/worlds/shapez/docs/de_shapez.md b/worlds/shapez/docs/de_shapez.md new file mode 100644 index 000000000000..4a26ea821ce0 --- /dev/null +++ b/worlds/shapez/docs/de_shapez.md @@ -0,0 +1,71 @@ +# shapez + +## Was für ein Spiel ist das? + +shapez ist ein Automatisierungsspiel, in dem du Formen aus zufällig generierten Vorkommen in einer endlosen Welt +extrahierst, zerschneidest, rotierst, stapelst, anmalst und schließlich zum Zentrum beförderst, um Level abzuschließen +und Upgrades zu kaufen. Das Tutorial beinhaltet 26 Level, in denen du (fast) immer ein neues Gebäude oder eine neue +Spielmechanik freischaltest. Danach folgen endlos weitere Level mit zufällig generierten Vorgaben. Um das Spiel bzw. +deine Gebäude schneller zu machen, kannst du bis zu 1000 Upgrades (pro Kategorie) kaufen. + +## Wo ist die Optionen-Seite? + +Die [Spieler-Optionen-Seite für dieses Spiel](../player-options) enthält alle Optionen zum Erstellen und exportieren +einer YAML-Datei. +Zusätzlich gibt es zu diesem Spiel "Datenpaket-Einstellungen", die du nach +[dieser Anleitung](/tutorial/shapez/datapackage_settings/de) einstellen kannst. + +## Inwiefern wird das Spiel randomisiert? + +Alle Belohnungen aus den Tutorial-Level (das Freischalten von Gebäuden und Spielmechaniken) und Verbesserungen durch +Upgrades werden dem Itempool der Multiworld hinzugefügt. Außerdem werden, wenn so in den Spieler-Optionen festgelegt, +die Bedingungen zum Abschließen eines Levels und zum Kaufen der Upgrades randomisiert. + +## Was ist das Ziel von shapez in Archipelago? + +Da das Spiel eigentlich kein konkretes Ziel (nach dem Tutorial) hat, kann man sich zwischen (momentan) 4 verschiedenen +Zielen entscheiden: +1. Vanilla: Schließe Level 26 ab (eigentlich das Ende des Tutorials). +2. MAM: Schließe ein bestimmtes Level nach Level 26 ab, das zuvor in den Spieler-Optionen festgelegt wurde. Es ist +empfohlen, eine Maschine zu bauen, die alles automatisch herstellt ("Make-Anything-Machine", kurz MAM). +3. Even Fasterer: Kaufe alle Upgrades bis zu einer in den Spieler-Optionen festgelegten Stufe (nach Stufe 8). +4. Efficiency III: Liefere 256 Blaupausen-Formen pro Sekunde ins Zentrum. + +## Welche Items können in den Welten anderer Spieler erscheinen? + +- Freischalten verschiedener Gebäude +- Blaupausen freischalten +- Große Upgrades (addiert 1 zum Geschwindigkeitsmultiplikator) +- Kleine Upgrades (addiert 0.1 zum Geschwindigkeitsmultiplikator) +- Andere ungewöhnliche Upgrades (optional) +- Verschiedene Bündel, die bestimmte Formen enthalten +- Fallen, die bestimmte Formen aus dem Zentrum dränieren (ja, das Wort gibt es) +- Fallen, die zufällige Gebäude oder andere Spielmechaniken betreffen + +## Was ist eine Location / ein Check? + +- Level (minimum 1-25, bis zu 499 je nach Spieler-Optionen, mit zusätzlichen Checks für Level 1 und 20) +- Upgrades (minimum Stufen II-VIII (2-8), bis zu D (500) je nach Spieler-Optionen) +- Bestimmte Formen mindestens einmal ins Zentrum liefern ("Shapesanity", bis zu 1000 zufällig gewählte Definitionen) +- Errungenschaften (bis zu 45) + +## Was passiert, wenn der Spieler ein Item erhält? + +Ein Pop-Up erscheint, das das/die erhaltene(n) Item(s) und eventuell weitere Informationen auflistet. + +## Was bedeuten die Namen dieser ganzen Shapesanity Dinger? + +Hier ist ein Spicker für die Englischarbeit (bloß nicht dem Lehrer zeigen): + +![image](/static/generated/docs/shapez/shapesanity_full.png) + +## Kann ich auch weitere Mods neben dem AP Client installieren? + +Zurzeit wird Kompatibilität mit anderen Mods nicht unterstützt, aber niemand kann dich davon abhalten, es trotzdem zu +versuchen. Mods, die das Gameplay verändern, werden wahrscheinlich nicht funktionieren, indem sie das Laden der +jeweiligen Mods verhindern oder das Spiel zum Abstürzen bringen, während einfache QoL-Mods vielleicht problemlos +funktionieren könnten. Wenn du es versuchst, dann also auf eigene Gefahr. + +## Hast du wirklich eine deutschsprachige Infoseite geschrieben, obwohl man sie aktuell nur über Umwege erreichen kann und du eigentlich an dem Praktikumsportfolio arbeiten solltest? + +Ja diff --git a/worlds/shapez/docs/en_shapez.md b/worlds/shapez/docs/en_shapez.md new file mode 100644 index 000000000000..dc41d73d7e13 --- /dev/null +++ b/worlds/shapez/docs/en_shapez.md @@ -0,0 +1,65 @@ +# shapez + +## What is this game? + +shapez is an automation game about cutting, rotating, stacking, and painting shapes, that you extract from randomly +generated patches on an infinite canvas, and sending them to the hub to complete levels. The "tutorial", where you +unlock a new building or game mechanic (almost) each level, lasts until level 26, where you unlock freeplay with +infinitely more levels, that require a new, randomly generated shape. Alongside the levels, you can unlock upgrades, +that make your buildings work faster. + +## Where is the options page? + +The [player options page for this game](../player-options) contains all the options you need to configure +and export a config file. +There are also some advanced "datapackage settings" that can be changed by following +[this guide](/tutorial/shapez/datapackage_settings/en). + +## What does randomization do to this game? + +Buildings and gameplay mechanics, that you normally unlock by completing a level, and upgrade improvements are put +into the item pool of the multiworld. Also, if enabled, the requirements for completing a level or buying an upgrade are +randomized. + +## What is the goal of shapez in Archipelago? + +As the game has no actual goal where the game ends, there are (currently) 4 different goals you can choose from in the +player options: +1. Vanilla: Complete level 26 (the end of the tutorial). +2. MAM: Complete a player-specified level after level 26. It's recommended to build a Make-Anything-Machine (MAM). +3. Even Fasterer: Upgrade everything to a player-specified tier after tier 8. +4. Efficiency III: Deliver 256 blueprint shapes per second to the hub. + +## Which items can be in another player's world? + +- Unlock different buildings +- Unlock blueprints +- Big upgrade improvements (adds 1 to the multiplier) +- Small upgrade improvements (adds .1 to the multiplier) +- Other unusual upgrade improvements (optional) +- Different shapes bundles +- Inventory draining traps +- Different traps afflicting random buildings and game mechanics + +## What is considered a location check? + +- Levels (minimum 1-25, up to 499 depending on player options, with additional checks for levels 1 and 20) +- Upgrades (minimum tiers II-VIII (2-8), up to D (500) depending on player options) +- Delivering certain shapes at least once to the hub ("shapesanity", up to 1000 from a 75800 names pool) +- Achievements (up to 45) + +## When the player receives an item, what happens? + +A pop-up will show, which item(s) were received, with additional information on some of them. + +## What do the names of all these shapesanity locations mean? + +Here's a cheat sheet: + +![image](/static/generated/docs/shapez/shapesanity_full.png) + +## Can I use other mods alongside the AP client? + +At the moment, compatibility with other mods is not supported, but not forbidden. Gameplay altering mods will most +likely crash the game or disable loading the afflicted mods, while QoL mods might work without problems. Try at your own +risk. diff --git a/worlds/shapez/docs/setup_de.md b/worlds/shapez/docs/setup_de.md new file mode 100644 index 000000000000..1b927f379056 --- /dev/null +++ b/worlds/shapez/docs/setup_de.md @@ -0,0 +1,62 @@ +# Setup-Anleitung für shapez: Archipelago + +## Schnelle Links + +- Info-Seite zum Spiel + * [English](/games/shapez/info/en) + * [Deutsch](/games/shapez/info/de) +- [Spieler-Optionen-Seite](/games/shapez/player-options) + +## Benötigte Software + +- Eine installierbare und aktuelle PC-Version von shapez ([Steam](https://store.steampowered.com/app/1318690/shapez/)). +- Die shapezipelago Mod von der [mod.io-Seite](https://mod.io/g/shapez/m/shapezipelago). + +## Optionale Software + +- Archipelago von der [Archipelago-Release-Seite](https://github.com/ArchipelagoMW/Archipelago/releases) + * (Für den Text-Client) + * (Alternativ kannst du auch die eingebaute Konsole (nur lesbar) nutzen, indem du beim Starten des Spiels den + `-dev`-Parameter verwendest) +- Universal Tracker (schau im `#future-game-design`-Thread für UT auf dem Discord-Server nach der aktuellen Anleitung) + +## Installation + +Da das Spiel einen eingebauten Mod-Loader hat, musst du nur die "shapezipelago@X.X.X.js"-Datei in den dafür vorgesehenen +Ordner kopieren. Wenn du nicht weißt, wo dieser ist, dann öffne das Spiel, drücke auf "MODS" und schließlich auf +"MODORDNER ÖFFNEN". + +Du solltest (egal ob vor oder nach der Installation) die Einstellungen des Spiels öffnen und `HINWEISE & TUTORIALS` im +Reiter `BENUTZEROBERFLÄCHE` ausschalten, da sie sonst den Upgrade-Shop verstecken wird, bis du ein paar Level +abgeschlossen hast. + +## Erstellen deiner YAML-Datei + +### Was ist eine YAML-Datei und wofür brauche ich die? + +Deine persönliche YAML-Datei beinhaltet eine Reihe von Optionen, die der Zufallsgenerator zum Erstellen von deinem +Spiel benötigt. Jeder Spieler einer Multiworld stellt seine eigene YAML-Datei zur Verfügung. Dadurch kann jeder Spieler +sein Spiel nach seinem eigenen Geschmack gestalten, während andere Spieler unabhängig davon ihre eigenen Optionen +wählen können! + +### Wo bekomme ich so eine YAML-Datei her? + +Du kannst auf der [shapez-Spieler-Optionen-Seite](/games/shapez/player-options) eine YAML-Datei generieren oder ein +Template herunterladen. + +## Einer MultiWorld beitreten + +1. Öffne das Spiel. +2. Gib im Hauptmenü den Slot-Namen, die Adresse, den Port und das Passwort (optional) in die dafür vorgesehene Box ein. +3. Drücke auf "Connect". + - Erneutes Drücken trennt die Verbindung zum Server. + - Ob du verbunden bist, steht direkt daneben. +4. Starte ein neues Spiel. + +Nachdem der Speicherstand erstellt wurde und du zum Hauptmenü zurückkehrst, wird das erneute Öffnen des Speicherstandes +erneut verbinden. + +### Der Port/Die Adresse der MultiWorld hat sich geändert, wie trete ich mit meinem existierenden Speicherstand bei? + +Wiederhole die Schritte 1-3 und öffne den existierenden Speicherstand. Dies wird außerdem die gespeicherten Login-Daten +überschreiben, sodass du dies nur einmal machen musst. \ No newline at end of file diff --git a/worlds/shapez/docs/setup_en.md b/worlds/shapez/docs/setup_en.md new file mode 100644 index 000000000000..4c91c16a0b5b --- /dev/null +++ b/worlds/shapez/docs/setup_en.md @@ -0,0 +1,58 @@ +# Setup Guide for shapez: Archipelago + +## Quick Links + +- Game Info Page + * [English](/games/shapez/info/en) + * [Deutsch](/games/shapez/info/de) +- [Player Options Page](/games/shapez/player-options) + +## Required Software + +- An installable, up-to-date PC version of shapez ([Steam](https://store.steampowered.com/app/1318690/shapez/)). +- The shapezipelago mod from the [mod.io page](https://mod.io/g/shapez/m/shapezipelago). + +## Optional Software + +- Archipelago from the [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases) + * (Only for the TextClient) + * (If you want, you can use the built-in console as a read-only text client by launching the game + with the `-dev` parameter) +- Universal Tracker (check UT's `#future-game-design` thread in the discord server for instructions) + +## Installation + +As the game has a built-in mod loader, all you need to do is copy the `shapezipelago@X.X.X.js` mod file into the mods +folder. If you don't know where that is, open the game, click on `MODS`, and then `OPEN MODS FOLDER`. + +It is recommended to go into the settings of the game and disable `HINTS & TUTORIALS` in the `USER INTERFACE` tab, as +this setting will disable the upgrade shop until you complete a few levels. + +## Configuring your YAML file + +### What is a YAML file and why do I need one? + +Your YAML file contains a set of configuration options which provide the generator with information about how it should +generate your game. Each player of a multiworld will provide their own YAML file. This setup allows each player to enjoy +an experience customized for their taste, and different players in the same multiworld can all have different options. + +### Where do I get a YAML file? + +You can generate a yaml or download a template by visiting the +[shapez Player Options Page](/games/shapez/player-options) + +## Joining a MultiWorld Game + +1. Open the game. +2. In the main menu, type the slot name, address, port, and password (optional) into the input box. +3. Click "Connect". + - To disconnect, just press this button again. + - The status of your connection is shown right next to the button. +4. Create a new game. + +After creating the save file and returning to the main menu, opening the save file again will automatically reconnect. + +### The MultiWorld changed its port/address, how do I reconnect correctly with my existing save file? + +Repeat steps 1-3 and open the existing save file. This will also overwrite the saved connection details, so you will +only have to do this once. diff --git a/worlds/shapez/docs/shapesanity_full.png b/worlds/shapez/docs/shapesanity_full.png new file mode 100644 index 000000000000..494065d51454 Binary files /dev/null and b/worlds/shapez/docs/shapesanity_full.png differ diff --git a/worlds/shapez/items.py b/worlds/shapez/items.py new file mode 100644 index 000000000000..aef4c03317ea --- /dev/null +++ b/worlds/shapez/items.py @@ -0,0 +1,279 @@ +from typing import Dict, Callable, Any, List + +from BaseClasses import Item, ItemClassification as IClass +from .options import ShapezOptions +from .data.strings import GOALS, ITEMS, OTHER + + +def is_mam_achievement_included(options: ShapezOptions) -> IClass: + return IClass.progression if options.include_achievements and (not options.goal == GOALS.vanilla) else IClass.useful + + +def is_achievements_included(options: ShapezOptions) -> IClass: + return IClass.progression if options.include_achievements else IClass.useful + + +def is_goal_efficiency_iii(options: ShapezOptions) -> IClass: + return IClass.progression if options.goal == GOALS.efficiency_iii else IClass.useful + + +def always_progression(options: ShapezOptions) -> IClass: + return IClass.progression + + +def always_useful(options: ShapezOptions) -> IClass: + return IClass.useful + + +def always_filler(options: ShapezOptions) -> IClass: + return IClass.filler + + +def always_trap(options: ShapezOptions) -> IClass: + return IClass.trap + + +# Routing buildings are not needed to complete the game, but building factories without balancers and tunnels +# would be unreasonably complicated and time-consuming. +# Some buildings are not needed to complete the game, but are "logically needed" for the "MAM" achievement. + +buildings_processing: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.cutter: always_progression, + ITEMS.cutter_quad: always_progression, + ITEMS.rotator: always_progression, + ITEMS.rotator_ccw: always_progression, + ITEMS.rotator_180: always_progression, + ITEMS.stacker: always_progression, + ITEMS.painter: always_progression, + ITEMS.painter_double: always_progression, + ITEMS.painter_quad: always_progression, + ITEMS.color_mixer: always_progression, +} + +buildings_routing: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.balancer: always_progression, + ITEMS.comp_merger: always_progression, + ITEMS.comp_splitter: always_progression, + ITEMS.tunnel: always_progression, + ITEMS.tunnel_tier_ii: is_mam_achievement_included, +} + +buildings_other: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trash: always_progression, + ITEMS.extractor_chain: always_useful +} + +buildings_top_row: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.belt_reader: is_mam_achievement_included, + ITEMS.storage: is_achievements_included, + ITEMS.switch: always_progression, + ITEMS.item_filter: is_mam_achievement_included, + ITEMS.display: always_useful +} + +buildings_wires: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.wires: always_progression, + ITEMS.const_signal: always_progression, + ITEMS.logic_gates: is_mam_achievement_included, + ITEMS.virtual_proc: is_mam_achievement_included +} + +gameplay_unlocks: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.blueprints: is_achievements_included +} + +upgrades: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.upgrade_big_belt: always_progression, + ITEMS.upgrade_big_miner: always_useful, + ITEMS.upgrade_big_proc: always_useful, + ITEMS.upgrade_big_paint: always_useful, + ITEMS.upgrade_small_belt: always_filler, + ITEMS.upgrade_small_miner: always_filler, + ITEMS.upgrade_small_proc: always_filler, + ITEMS.upgrade_small_paint: always_filler +} + +whacky_upgrades: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.upgrade_gigantic_belt: always_progression, + ITEMS.upgrade_gigantic_miner: always_useful, + ITEMS.upgrade_gigantic_proc: always_useful, + ITEMS.upgrade_gigantic_paint: always_useful, + ITEMS.upgrade_rising_belt: always_progression, + ITEMS.upgrade_rising_miner: always_useful, + ITEMS.upgrade_rising_proc: always_useful, + ITEMS.upgrade_rising_paint: always_useful, + ITEMS.upgrade_big_random: always_useful, + ITEMS.upgrade_small_random: always_filler, +} + +whacky_upgrade_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_upgrade_belt: always_trap, + ITEMS.trap_upgrade_miner: always_trap, + ITEMS.trap_upgrade_proc: always_trap, + ITEMS.trap_upgrade_paint: always_trap, + ITEMS.trap_upgrade_demonic_belt: always_trap, + ITEMS.trap_upgrade_demonic_miner: always_trap, + ITEMS.trap_upgrade_demonic_proc: always_trap, + ITEMS.trap_upgrade_demonic_paint: always_trap, +} + +bundles: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.bundle_blueprint: always_filler, + ITEMS.bundle_level: always_filler, + ITEMS.bundle_upgrade: always_filler +} + +standard_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_locked: always_trap, + ITEMS.trap_throttled: always_trap, + ITEMS.trap_malfunction: always_trap, + ITEMS.trap_inflation: always_trap, + ITEMS.trap_clear_belts: always_trap, +} + +random_draining_trap: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_draining_inv: always_trap +} + +split_draining_traps: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.trap_draining_blueprint: always_trap, + ITEMS.trap_draining_level: always_trap, + ITEMS.trap_draining_upgrade: always_trap +} + +belt_and_extractor: Dict[str, Callable[[ShapezOptions], IClass]] = { + ITEMS.belt: always_progression, + ITEMS.extractor: always_progression +} + +item_table: Dict[str, Callable[[ShapezOptions], IClass]] = { + **buildings_processing, + **buildings_routing, + **buildings_other, + **buildings_top_row, + **buildings_wires, + **gameplay_unlocks, + **upgrades, + **whacky_upgrades, + **whacky_upgrade_traps, + **bundles, + **standard_traps, + **random_draining_trap, + **split_draining_traps, + **belt_and_extractor +} + +big_upgrades = [ + ITEMS.upgrade_big_belt, + ITEMS.upgrade_big_miner, + ITEMS.upgrade_big_proc, + ITEMS.upgrade_big_paint +] + +small_upgrades = [ + ITEMS.upgrade_small_belt, + ITEMS.upgrade_small_miner, + ITEMS.upgrade_small_proc, + ITEMS.upgrade_small_paint +] + + +def filler(random: float, whacky_allowed: bool) -> str: + """Returns a random filler item.""" + bundles_list = [*bundles] + return random_choice_nested(random, [ + small_upgrades, + [ + bundles_list, + bundles_list, + [ + big_upgrades, + [*whacky_upgrades] if whacky_allowed else big_upgrades, + ], + ], + ]) + + +def trap(random: float, split_draining: bool, whacky_allowed: bool) -> str: + """Returns a random trap item.""" + pool = [ + *standard_traps, + ITEMS.trap_draining_inv if not split_draining else [*split_draining_traps], + ] + if whacky_allowed: + pool.append([*whacky_upgrade_traps]) + return random_choice_nested(random, pool) + + +def random_choice_nested(random: float, nested: List[Any]) -> Any: + """Helper function for getting a random element from a nested list.""" + current: Any = nested + while isinstance(current, List): + index_float = random*len(current) + current = current[int(index_float)] + random = index_float-int(index_float) + return current + + +item_descriptions = { # TODO replace keys with global strings and update with whacky upgrades + "Balancer": "A routing building, that can merge two belts into one, split a belt in two, " + + "or balance the items of two belts", + "Tunnel": "A routing building consisting of two parts, that allows for gaps in belts", + "Compact Merger": "A small routing building, that merges two belts into one", + "Tunnel Tier II": "A routing building consisting of two parts, that allows for even longer gaps in belts", + "Compact Splitter": "A small routing building, that splits a belt in two", + "Cutter": "A processing building, that cuts shapes vertically in two halves", + "Rotator": "A processing building, that rotates shapes 90 degrees clockwise", + "Painter": "A processing building, that paints shapes in a given color", + "Rotator (CCW)": "A processing building, that rotates shapes 90 degrees counter-clockwise", + "Color Mixer": "A processing building, that mixes two colors together to create a new one", + "Stacker": "A processing building, that combines two shapes with missing parts or puts one on top of the other", + "Quad Cutter": "A processing building, that cuts shapes in four quarter parts", + "Double Painter": "A processing building, that paints two shapes in a given color", + "Rotator (180°)": "A processing building, that rotates shapes 180 degrees", + "Quad Painter": "A processing building, that paint each quarter of a shape in another given color and requires " + + "wire inputs for each color to work", + "Trash": "A building, that destroys unused shapes", + "Chaining Extractor": "An upgrade to extractors, that can increase the output without balancers or mergers", + "Belt Reader": "A wired building, that shows the average amount of items passing through per second", + "Storage": "A building, that stores up to 5000 of a certain shape", + "Switch": "A building, that sends a constant boolean signal", + "Item Filter": "A wired building, that filters items based on wire input", + "Display": "A wired building, that displays a shape or color based on wire input", + "Wires": "The main building of the wires layer, that carries signals between other buildings", + "Constant Signal": "A building on the wires layer, that sends a constant shape, color, or boolean signal", + "Logic Gates": "Multiple buildings on the wires layer, that perform logical operations on wire signals", + "Virtual Processing": "Multiple buildings on the wires layer, that process wire signals like processor buildings", + "Blueprints": "A game mechanic, that allows copy-pasting multiple buildings at once", + "Big Belt Upgrade": "An upgrade, that adds 1 to the speed multiplier of belts, distributors, and tunnels", + "Big Miner Upgrade": "An upgrade, that adds 1 to the speed multiplier of extractors", + "Big Processors Upgrade": "An upgrade, that adds 1 to the speed multiplier of cutters, rotators, and stackers", + "Big Painting Upgrade": "An upgrade, that adds 1 to the speed multiplier of painters and color mixers", + "Small Belt Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of belts, distributors, and tunnels", + "Small Miner Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of extractors", + "Small Processors Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of cutters, rotators, and stackers", + "Small Painting Upgrade": "An upgrade, that adds 0.1 to the speed multiplier of painters and color mixers", + "Blueprint Shapes Bundle": "A bundle with 1000 blueprint shapes, instantly delivered to the hub", + "Level Shapes Bundle": "A bundle with some shapes needed for the current level, " + + "instantly delivered to the hub", + "Upgrade Shapes Bundle": "A bundle with some shapes needed for a random upgrade, " + + "instantly delivered to the hub", + "Inventory Draining Trap": "Randomly drains either blueprint shapes, current level requirement shapes, " + + "or random upgrade requirement shapes, by half", + "Blueprint Shapes Draining Trap": "Drains the stored blueprint shapes by half", + "Level Shapes Draining Trap": "Drains the current level requirement shapes by half", + "Upgrade Shapes Draining Trap": "Drains a random upgrade requirement shape by half", + "Locked Building Trap": "Locks a random building from being placed for 15-60 seconds", + "Throttled Building Trap": "Halves the speed of a random building for 15-60 seconds", + "Malfunctioning Trap": "Makes a random building process items incorrectly for 15-60 seconds", + "Inflation Trap": "Permanently increases the required shapes multiplier by 1. " + "In other words: Permanently increases required shapes by 10% of the standard amount.", + "Belt": "One of the most important buildings in the game, that transports your shapes and colors from one " + + "place to another", + "Extractor": "One of the most important buildings in the game, that extracts shapes from those randomly " + + "generated patches" +} + + +class ShapezItem(Item): + game = OTHER.game_name diff --git a/worlds/shapez/locations.py b/worlds/shapez/locations.py new file mode 100644 index 000000000000..6d069afaa899 --- /dev/null +++ b/worlds/shapez/locations.py @@ -0,0 +1,546 @@ +from random import Random +from typing import List, Tuple, Dict, Optional, Callable + +from BaseClasses import Location, LocationProgressType, Region +from .data.strings import CATEGORY, LOCATIONS, REGIONS, OPTIONS, GOALS, OTHER, SHAPESANITY +from .options import max_shapesanity, max_levels_and_upgrades + +categories = [CATEGORY.belt, CATEGORY.miner, CATEGORY.processors, CATEGORY.painting] + +translate: List[Tuple[int, str]] = [ + (1000, "M"), + (900, "CM"), + (500, "D"), + (400, "CD"), + (100, "C"), + (90, "XC"), + (50, "L"), + (40, "XL"), + (10, "X"), + (9, "IX"), + (5, "V"), + (4, "IV"), + (1, "I") +] + + +def roman(num: int) -> str: + """Converts positive non-zero integers into roman numbers.""" + rom: str = "" + for key, val in translate: + while num >= key: + rom += val + num -= key + return rom + + +location_description = { # TODO change keys to global strings + "Level 1": "Levels are completed by delivering certain shapes in certain amounts to the hub. The required shape " + "and amount for the current level are always displayed on the hub.", + "Level 1 Additional": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 20 Additional": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 20 Additional 2": "In the vanilla game, levels 1 and 20 have unlock more than one building.", + "Level 26": "In the vanilla game, level 26 is the final level of the tutorial, unlocking freeplay.", + f"Level {max_levels_and_upgrades-1}": "This is the highest possible level that can contains an item, if your goal " + "is set to \"mam\"", + "Belt Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your hub. " + "This is the first upgrade in the belt, balancers, and tunnel category.", + "Miner Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your " + "hub. This is the first upgrade in the extractor category.", + "Processors Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in " + "your hub. This is the first upgrade in the cutter, rotators, and stacker category.", + "Painting Upgrade Tier II": "Upgrades can be purchased by having certain shapes in certain amounts stored in your " + "hub. This is the first upgrade in the painters and color mixer category.", + "Belt Upgrade Tier VIII": "This is the final upgrade in the belt, balancers, and tunnel category, if your goal is " + "**not** set to \"even_fasterer\".", + "Miner Upgrade Tier VIII": "This is the final upgrade in the extractor category, if your goal is **not** set to " + "\"even_fasterer\".", + "Processors Upgrade Tier VIII": "This is the final upgrade in the cutter, rotators, and stacker category, if your " + "goal is **not** set to \"even_fasterer\".", + "Painting Upgrade Tier VIII": "This is the final upgrade in the painters and color mixer category, if your goal is " + "**not** set to \"even_fasterer\".", + f"Belt Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the belt, " + "balancers, and tunnel category, if your goal is set to " + "\"even_fasterer\".", + f"Miner Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the extractor " + "category, if your goal is set to \"even_fasterer\".", + f"Processors Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the cutter, " + "rotators, and stacker category, if your goal is set " + "to \"even_fasterer\".", + f"Painting Upgrade Tier {roman(max_levels_and_upgrades)}": "This is the highest possible upgrade in the painters " + "and color mixer category, if your goal is set to " + "\"even_fasterer\".", + "My eyes no longer hurt": "This is an achievement, that is unlocked by activating dark mode.", + "Painter": "This is an achievement, that is unlocked by painting a shape using the painter or double painter.", + "Cutter": "This is an achievement, that is unlocked by cutting a shape in half using the cutter.", + "Rotater": "This is an achievement, that is unlocked by rotating a shape clock wise.", + "Wait, they stack?": "This is an achievement, that is unlocked by stacking two shapes on top of each other.", + "Wires": "This is an achievement, that is unlocked by completing level 20.", + "Storage": "This is an achievement, that is unlocked by storing a shape in a storage.", + "Freedom": "This is an achievement, that is unlocked by completing level 20. It is only included if the goal is " + "**not** set to vanilla.", + "The logo!": "This is an achievement, that is unlocked by producing the logo of the game.", + "To the moon": "This is an achievement, that is unlocked by producing the rocket shape.", + "It's piling up": "This is an achievement, that is unlocked by having 100.000 blueprint shapes stored in the hub.", + "I'll use it later": "This is an achievement, that is unlocked by having one million blueprint shapes stored in " + "the hub.", + "Efficiency 1": "This is an achievement, that is unlocked by delivering 25 blueprint shapes per second to the hub.", + "Preparing to launch": "This is an achievement, that is unlocked by delivering 10 rocket shapes per second to the " + "hub.", + "SpaceY": "This is an achievement, that is unlocked by 20 rocket shapes per second to the hub.", + "Stack overflow": "This is an achievement, that is unlocked by stacking 4 layers on top of each other.", + "It's a mess": "This is an achievement, that is unlocked by having 100 different shapes stored in the hub.", + "Faster": "This is an achievement, that is unlocked by upgrading everything to at least tier V.", + "Even faster": "This is an achievement, that is unlocked by upgrading everything to at least tier VIII.", + "Get rid of them": "This is an achievement, that is unlocked by transporting 1000 shapes into a trash can.", + "It's been a long time": "This is an achievement, that is unlocked by playing your save file for 10 hours " + "(combined playtime).", + "Addicted": "This is an achievement, that is unlocked by playing your save file for 20 hours (combined playtime).", + "Can't stop": "This is an achievement, that is unlocked by reaching level 50.", + "Is this the end?": "This is an achievement, that is unlocked by reaching level 100.", + "Getting into it": "This is an achievement, that is unlocked by playing your save file for 1 hour (combined " + "playtime).", + "Now it's easy": "This is an achievement, that is unlocked by placing a blueprint.", + "Computer Guy": "This is an achievement, that is unlocked by placing 5000 wires.", + "Speedrun Master": "This is an achievement, that is unlocked by completing level 12 in under 30 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Speedrun Novice": "This is an achievement, that is unlocked by completing level 12 in under 60 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Not an idle game": "This is an achievement, that is unlocked by completing level 12 in under 120 Minutes. This " + "location is excluded by default, as it can become inaccessible in a save file after that time.", + "Efficiency 2": "This is an achievement, that is unlocked by delivering 50 blueprint shapes per second to the hub.", + "Branding specialist 1": "This is an achievement, that is unlocked by delivering 25 logo shapes per second to the " + "hub.", + "Branding specialist 2": "This is an achievement, that is unlocked by delivering 50 logo shapes per second to the " + "hub.", + "King of Inefficiency": "This is an achievement, that is unlocked by **not** placing a counter clock wise rotator " + "until level 14. This location is excluded by default, as it can become inaccessible in a " + "save file after placing that building.", + "It's so slow": "This is an achievement, that is unlocked by completing level 12 **without** buying any belt " + "upgrade. This location is excluded by default, as it can become inaccessible in a save file after " + "buying that upgrade.", + "MAM (Make Anything Machine)": "This is an achievement, that is unlocked by completing any level after level 26 " + "**without** modifying your factory. It is recommended to build a Make Anything " + "Machine.", + "Perfectionist": "This is an achievement, that is unlocked by destroying more than 1000 buildings at once.", + "The next dimension": "This is an achievement, that is unlocked by opening the wires layer.", + "Oops": "This is an achievement, that is unlocked by delivering a shape, that neither a level requirement nor an " + "upgrade requirement.", + "Copy-Pasta": "This is an achievement, that is unlocked by placing a blueprint with at least 1000 buildings.", + "I've seen that before ...": "This is an achievement, that is unlocked by producing RgRyRbRr.", + "Memories from the past": "This is an achievement, that is unlocked by producing WrRgWrRg:CwCrCwCr:SgSgSgSg.", + "I need trains": "This is an achievement, that is unlocked by placing a 500 tiles long belt.", + "A bit early?": "This is an achievement, that is unlocked by producing the logo shape before reaching level 18. " + "This location is excluded by default, as it can become inaccessible in a save file after reaching " + "that level.", + "GPS": "This is an achievement, that is unlocked by placing 15 or more map markers.", + "Shapesanity 1": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 1 is always an uncolored " + "circle.", + "Shapesanity 2": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 2 is always an uncolored " + "square.", + "Shapesanity 3": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 3 is always an uncolored " + "star.", + "Shapesanity 4": "Shapesanity locations can be checked by delivering a described shape to the hub, without " + "requiring a certain roation, orientation, or ordering. Shapesanity 4 is always an uncolored " + "windmill.", +} + +shapesanity_simple: Dict[str, str] = {} +shapesanity_1_4: Dict[str, str] = {} +shapesanity_two_sided: Dict[str, str] = {} +shapesanity_three_parts: Dict[str, str] = {} +shapesanity_four_parts: Dict[str, str] = {} + +level_locations: List[str] = ([LOCATIONS.level(1, 1), LOCATIONS.level(20, 1), LOCATIONS.level(20, 2)] + + [LOCATIONS.level(x) for x in range(1, max_levels_and_upgrades)]) +upgrade_locations: List[str] = [LOCATIONS.upgrade(cat, roman(x)) + for cat in categories for x in range(2, max_levels_and_upgrades+1)] +achievement_locations: List[str] = [LOCATIONS.my_eyes, LOCATIONS.painter, LOCATIONS.cutter, LOCATIONS.rotater, + LOCATIONS.wait_they_stack, LOCATIONS.wires, LOCATIONS.storage, LOCATIONS.freedom, + LOCATIONS.the_logo, LOCATIONS.to_the_moon, LOCATIONS.its_piling_up, + LOCATIONS.use_it_later, LOCATIONS.efficiency_1, LOCATIONS.preparing_to_launch, + LOCATIONS.spacey, LOCATIONS.stack_overflow, LOCATIONS.its_a_mess, LOCATIONS.faster, + LOCATIONS.even_faster, LOCATIONS.get_rid_of_them, LOCATIONS.a_long_time, + LOCATIONS.addicted, LOCATIONS.cant_stop, LOCATIONS.is_this_the_end, + LOCATIONS.getting_into_it, LOCATIONS.now_its_easy, LOCATIONS.computer_guy, + LOCATIONS.speedrun_master, LOCATIONS.speedrun_novice, LOCATIONS.not_idle_game, + LOCATIONS.efficiency_2, LOCATIONS.branding_1, + LOCATIONS.branding_2, LOCATIONS.king_of_inefficiency, LOCATIONS.its_so_slow, + LOCATIONS.mam, LOCATIONS.perfectionist, LOCATIONS.next_dimension, LOCATIONS.oops, + LOCATIONS.copy_pasta, LOCATIONS.ive_seen_that_before, LOCATIONS.memories, + LOCATIONS.i_need_trains, LOCATIONS.a_bit_early, LOCATIONS.gps] +shapesanity_locations: List[str] = [LOCATIONS.shapesanity(x) for x in range(1, max_shapesanity+1)] + + +def init_shapesanity_pool() -> None: + """Imports the pregenerated shapesanity pool.""" + from .data import shapesanity_pool + shapesanity_simple.update(shapesanity_pool.shapesanity_simple) + shapesanity_1_4.update(shapesanity_pool.shapesanity_1_4) + shapesanity_two_sided.update(shapesanity_pool.shapesanity_two_sided) + shapesanity_three_parts.update(shapesanity_pool.shapesanity_three_parts) + shapesanity_four_parts.update(shapesanity_pool.shapesanity_four_parts) + + +def addlevels(maxlevel: int, logictype: str, + random_logic_phase_length: List[int]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all level locations based on player options (maxlevel INCLUDED). + If shape requirements are not randomized, the logic type is expected to be vanilla.""" + + # Level 1 is always directly accessible + locations: Dict[str, Tuple[str, LocationProgressType]] \ + = {LOCATIONS.level(1): (REGIONS.main, LocationProgressType.PRIORITY), + LOCATIONS.level(1, 1): (REGIONS.main, LocationProgressType.PRIORITY)} + level_regions = [REGIONS.main, REGIONS.levels_1, REGIONS.levels_2, REGIONS.levels_3, + REGIONS.levels_4, REGIONS.levels_5] + + def f(name: str, region: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + locations[name] = (region, progress) + + if logictype.startswith(OPTIONS.logic_vanilla): + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + f(LOCATIONS.level(2), REGIONS.levels_1) + f(LOCATIONS.level(3), REGIONS.levels_1) + f(LOCATIONS.level(4), REGIONS.levels_1) + f(LOCATIONS.level(5), REGIONS.levels_2) + f(LOCATIONS.level(6), REGIONS.levels_2) + f(LOCATIONS.level(7), REGIONS.levels_3) + f(LOCATIONS.level(8), REGIONS.levels_3) + f(LOCATIONS.level(9), REGIONS.levels_4) + f(LOCATIONS.level(10), REGIONS.levels_4) + for x in range(11, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_stretched): + phaselength = maxlevel//6 + f(LOCATIONS.level(20, 1), level_regions[20//phaselength]) + f(LOCATIONS.level(20, 2), level_regions[20//phaselength]) + for x in range(2, phaselength): + f(LOCATIONS.level(x), REGIONS.main) + for x in range(phaselength, phaselength*2): + f(LOCATIONS.level(x), REGIONS.levels_1) + for x in range(phaselength*2, phaselength*3): + f(LOCATIONS.level(x), REGIONS.levels_2) + for x in range(phaselength*3, phaselength*4): + f(LOCATIONS.level(x), REGIONS.levels_3) + for x in range(phaselength*4, phaselength*5): + f(LOCATIONS.level(x), REGIONS.levels_4) + for x in range(phaselength*5, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_quick): + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + f(LOCATIONS.level(2), REGIONS.levels_1) + f(LOCATIONS.level(3), REGIONS.levels_2) + f(LOCATIONS.level(4), REGIONS.levels_3) + f(LOCATIONS.level(5), REGIONS.levels_4) + for x in range(6, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype.startswith(OPTIONS.logic_random_steps): + next_level = 2 + for phase in range(5): + for x in range(random_logic_phase_length[phase]): + f(LOCATIONS.level(next_level+x), level_regions[phase]) + next_level += random_logic_phase_length[phase] + if next_level > 20: + f(LOCATIONS.level(20, 1), level_regions[phase]) + f(LOCATIONS.level(20, 2), level_regions[phase]) + for x in range(next_level, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + if next_level <= 20: + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + + elif logictype == OPTIONS.logic_hardcore: + f(LOCATIONS.level(20, 1), REGIONS.levels_5) + f(LOCATIONS.level(20, 2), REGIONS.levels_5) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_5) + + elif logictype == OPTIONS.logic_dopamine: + f(LOCATIONS.level(20, 1), REGIONS.levels_2) + f(LOCATIONS.level(20, 2), REGIONS.levels_2) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.levels_2) + + elif logictype == OPTIONS.logic_dopamine_overflow: + f(LOCATIONS.level(20, 1), REGIONS.main) + f(LOCATIONS.level(20, 2), REGIONS.main) + for x in range(2, maxlevel+1): + f(LOCATIONS.level(x), REGIONS.main) + + else: + raise Exception(f"Illegal level logic type {logictype}") + + return locations + + +def addupgrades(finaltier: int, logictype: str, + category_random_logic_amounts: Dict[str, int]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all upgrade locations based on player options (finaltier INCLUDED). + If shape requirements are not randomized, give logic type 0.""" + + locations: Dict[str, Tuple[str, LocationProgressType]] = {} + upgrade_regions = [REGIONS.main, REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, + REGIONS.upgrades_4, REGIONS.upgrades_5] + + def f(name: str, region: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + locations[name] = (region, progress) + + if logictype == OPTIONS.logic_vanilla_like: + f(LOCATIONS.upgrade(CATEGORY.belt, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.miner, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.processors, "II"), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.painting, "II"), REGIONS.upgrades_3) + f(LOCATIONS.upgrade(CATEGORY.belt, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.miner, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "III"), REGIONS.upgrades_1) + f(LOCATIONS.upgrade(CATEGORY.painting, "III"), REGIONS.upgrades_3) + for x in range(4, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_linear: + for x in range(2, 7): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), upgrade_regions[x-2]) + for x in range(7, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_category: + for x in range(2, 7): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), REGIONS.main) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), REGIONS.main) + for x in range(7, finaltier + 1): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), REGIONS.upgrades_5) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), REGIONS.upgrades_5) + f(LOCATIONS.upgrade(CATEGORY.processors, "II"), REGIONS.upgrades_1) + f(LOCATIONS.upgrade(CATEGORY.processors, "III"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "IV"), REGIONS.upgrades_2) + f(LOCATIONS.upgrade(CATEGORY.processors, "V"), REGIONS.upgrades_3) + f(LOCATIONS.upgrade(CATEGORY.processors, "VI"), REGIONS.upgrades_3) + for x in range(7, finaltier+1): + f(LOCATIONS.upgrade(CATEGORY.processors, roman(x)), REGIONS.upgrades_5) + for x in range(2, 4): + f(LOCATIONS.upgrade(CATEGORY.painting, roman(x)), REGIONS.upgrades_4) + for x in range(4, finaltier+1): + f(LOCATIONS.upgrade(CATEGORY.painting, roman(x)), REGIONS.upgrades_5) + + elif logictype == OPTIONS.logic_category_random: + for x in range(2, 7): + tier = roman(x) + f(LOCATIONS.upgrade(CATEGORY.belt, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.belt_low]]) + f(LOCATIONS.upgrade(CATEGORY.miner, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.miner_low]]) + f(LOCATIONS.upgrade(CATEGORY.processors, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.processors_low]]) + f(LOCATIONS.upgrade(CATEGORY.painting, tier), + upgrade_regions[category_random_logic_amounts[CATEGORY.painting_low]]) + for x in range(7, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + else: # logictype == hardcore + for cat in categories: + f(LOCATIONS.upgrade(cat, "II"), REGIONS.main) + for x in range(3, finaltier+1): + tier = roman(x) + for cat in categories: + f(LOCATIONS.upgrade(cat, tier), REGIONS.upgrades_5) + + return locations + + +def addachievements(excludesoftlock: bool, excludelong: bool, excludeprogressive: bool, + maxlevel: int, upgradelogictype: str, category_random_logic_amounts: Dict[str, int], + goal: str, presentlocations: Dict[str, Tuple[str, LocationProgressType]], + add_alias: Callable[[str, str], None], has_upgrade_traps: bool + ) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with all achievement locations based on player options.""" + + locations: Dict[str, Tuple[str, LocationProgressType]] = dict() + upgrade_regions = [REGIONS.main, REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, + REGIONS.upgrades_4, REGIONS.upgrades_5] + + def f(name: str, region: str, alias: str, progress: LocationProgressType = LocationProgressType.DEFAULT): + locations[name] = (region, progress) + add_alias(name, alias) + + f(LOCATIONS.my_eyes, REGIONS.menu, "Activate dark mode") + f(LOCATIONS.painter, REGIONS.paint_not_quad, "Paint a shape (no Quad Painter)") + f(LOCATIONS.cutter, REGIONS.cut_not_quad, "Cut a shape (no Quad Cutter)") + f(LOCATIONS.rotater, REGIONS.rotate_cw, "Rotate a shape clock wise") + f(LOCATIONS.wait_they_stack, REGIONS.stack_shape, "Stack a shape") + f(LOCATIONS.storage, REGIONS.store_shape, "Store a shape in the storage") + f(LOCATIONS.the_logo, REGIONS.all_buildings, "Produce the shapez logo") + f(LOCATIONS.to_the_moon, REGIONS.all_buildings, "Produce the rocket shape") + f(LOCATIONS.its_piling_up, REGIONS.all_buildings, "100k blueprint shapes") + f(LOCATIONS.use_it_later, REGIONS.all_buildings, "1 million blueprint shapes") + + f(LOCATIONS.stack_overflow, REGIONS.stack_shape, "4 layers shape") + f(LOCATIONS.its_a_mess, REGIONS.main, "100 different shapes in hub") + f(LOCATIONS.get_rid_of_them, REGIONS.trash_shape, "1000 shapes trashed") + f(LOCATIONS.getting_into_it, REGIONS.menu, "1 hour") + f(LOCATIONS.now_its_easy, REGIONS.blueprint, "Place a blueprint") + f(LOCATIONS.computer_guy, REGIONS.wiring, "Place 5000 wires") + f(LOCATIONS.perfectionist, REGIONS.any_building, "Destroy more than 1000 objects at once") + f(LOCATIONS.next_dimension, REGIONS.wiring, "Open the wires layer") + f(LOCATIONS.copy_pasta, REGIONS.blueprint, "Place a 1000 buildings blueprint") + f(LOCATIONS.ive_seen_that_before, REGIONS.all_buildings, "Produce RgRyRbRr") + f(LOCATIONS.memories, REGIONS.all_buildings, "Produce WrRgWrRg:CwCrCwCr:SgSgSgSg") + f(LOCATIONS.i_need_trains, REGIONS.belt, "Have a 500 tiles belt") + f(LOCATIONS.gps, REGIONS.menu, "15 map markers") + + # Per second delivery achievements + f(LOCATIONS.preparing_to_launch, REGIONS.all_buildings, "10 rocket shapes / second") + if not has_upgrade_traps: + f(LOCATIONS.spacey, REGIONS.all_buildings, "20 rocket shapes / second") + f(LOCATIONS.efficiency_1, REGIONS.all_buildings, "25 blueprints shapes / second") + f(LOCATIONS.efficiency_2, REGIONS.all_buildings_x1_6_belt, "50 blueprints shapes / second") + f(LOCATIONS.branding_1, REGIONS.all_buildings, "25 logo shapes / second") + f(LOCATIONS.branding_2, REGIONS.all_buildings_x1_6_belt, "50 logo shapes / second") + + # Achievements that depend on upgrades + f(LOCATIONS.even_faster, REGIONS.upgrades_5, "All upgrades on tier VIII") + if upgradelogictype == OPTIONS.logic_linear: + f(LOCATIONS.faster, REGIONS.upgrades_3, "All upgrades on tier V") + elif upgradelogictype == OPTIONS.logic_category_random: + f(LOCATIONS.faster, upgrade_regions[ + max(category_random_logic_amounts[CATEGORY.belt_low], + category_random_logic_amounts[CATEGORY.miner_low], + category_random_logic_amounts[CATEGORY.processors_low], + category_random_logic_amounts[CATEGORY.painting_low]) + ], "All upgrades on tier V") + else: + f(LOCATIONS.faster, REGIONS.upgrades_5, "All upgrades on tier V") + + # Achievements that depend on the level + f(LOCATIONS.wires, presentlocations[LOCATIONS.level(20)][0], "Complete level 20") + if not goal == GOALS.vanilla: + f(LOCATIONS.freedom, presentlocations[LOCATIONS.level(26)][0], "Complete level 26") + f(LOCATIONS.mam, REGIONS.mam, "Complete any level > 26 without modifications") + if maxlevel >= 50: + f(LOCATIONS.cant_stop, presentlocations[LOCATIONS.level(50)][0], "Reach level 50") + elif goal not in [GOALS.vanilla, GOALS.mam]: + f(LOCATIONS.cant_stop, REGIONS.levels_5, "Reach level 50") + if maxlevel >= 100: + f(LOCATIONS.is_this_the_end, presentlocations[LOCATIONS.level(100)][0], "Reach level 100") + elif goal not in [GOALS.vanilla, GOALS.mam]: + f(LOCATIONS.is_this_the_end, REGIONS.levels_5, "Reach level 100") + + # Achievements that depend on player preferences + if excludeprogressive: + unreasonable_type = LocationProgressType.EXCLUDED + else: + unreasonable_type = LocationProgressType.DEFAULT + if not excludesoftlock: + f(LOCATIONS.speedrun_master, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 30 min", unreasonable_type) + f(LOCATIONS.speedrun_novice, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 60 min", unreasonable_type) + f(LOCATIONS.not_idle_game, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 in under 120 min", unreasonable_type) + f(LOCATIONS.its_so_slow, presentlocations[LOCATIONS.level(12)][0], + "Complete level 12 without upgrading belts", unreasonable_type) + f(LOCATIONS.king_of_inefficiency, presentlocations[LOCATIONS.level(14)][0], + "No ccw rotator until level 14", unreasonable_type) + f(LOCATIONS.a_bit_early, REGIONS.all_buildings, + "Produce logo shape before level 18", unreasonable_type) + if not excludelong: + f(LOCATIONS.a_long_time, REGIONS.menu, "10 hours") + f(LOCATIONS.addicted, REGIONS.menu, "20 hours") + + # Achievements with a softlock chance of less than + # 1 divided by 2 to the power of the number of all atoms in the universe + f(LOCATIONS.oops, REGIONS.main, "Deliver an irrelevant shape") + + return locations + + +def addshapesanity(amount: int, random: Random, append_shapesanity: Callable[[str], None], + add_alias: Callable[[str, str], None]) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns a dictionary with a given number of random shapesanity locations.""" + + included_shapes: Dict[str, Tuple[str, LocationProgressType]] = {} + + def f(name: str, region: str, alias: str, progress: LocationProgressType = LocationProgressType.DEFAULT) -> None: + included_shapes[name] = (region, progress) + append_shapesanity(alias) + shapes_list.remove((alias, region)) + add_alias(name, alias) + + # Always have at least 4 shapesanity checks because of sphere 1 usefulls + both hardcore logic + shapes_list = list(shapesanity_simple.items()) + f(LOCATIONS.shapesanity(1), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.circle)) + f(LOCATIONS.shapesanity(2), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.square)) + f(LOCATIONS.shapesanity(3), REGIONS.sanity(REGIONS.full, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.star)) + f(LOCATIONS.shapesanity(4), REGIONS.sanity(REGIONS.east_wind, REGIONS.uncol), + SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.windmill)) + + # The pool switches dynamically depending on if either it's ratio or limit is reached + switched = 0 + for counting in range(4, amount): + if switched == 0 and (len(shapes_list) == 0 or counting == amount//2): + shapes_list = list(shapesanity_1_4.items()) + switched = 1 + elif switched == 1 and (len(shapes_list) == 0 or counting == amount*7//12): + shapes_list = list(shapesanity_two_sided.items()) + switched = 2 + elif switched == 2 and (len(shapes_list) == 0 or counting == amount*5//6): + shapes_list = list(shapesanity_three_parts.items()) + switched = 3 + elif switched == 3 and (len(shapes_list) == 0 or counting == amount*11//12): + shapes_list = list(shapesanity_four_parts.items()) + switched = 4 + x = random.randint(0, len(shapes_list)-1) + next_shape = shapes_list.pop(x) + included_shapes[LOCATIONS.shapesanity(counting+1)] = (next_shape[1], LocationProgressType.DEFAULT) + append_shapesanity(next_shape[0]) + add_alias(LOCATIONS.shapesanity(counting+1), next_shape[0]) + + return included_shapes + + +def addshapesanity_ut(shapesanity_names: List[str], add_alias: Callable[[str, str], None] + ) -> Dict[str, Tuple[str, LocationProgressType]]: + """Returns the same information as addshapesanity but will add specific values based on a UT rebuild.""" + + included_shapes: Dict[str, Tuple[str, LocationProgressType]] = {} + + for name in shapesanity_names: + for options in [shapesanity_simple, shapesanity_1_4, shapesanity_two_sided, shapesanity_three_parts, + shapesanity_four_parts]: + if name in options: + next_shape = options[name] + break + else: + raise ValueError(f"Could not find shapesanity name {name}") + included_shapes[LOCATIONS.shapesanity(len(included_shapes)+1)] = (next_shape, LocationProgressType.DEFAULT) + add_alias(LOCATIONS.shapesanity(len(included_shapes)), name) + return included_shapes + + +class ShapezLocation(Location): + game = OTHER.game_name + + def __init__(self, player: int, name: str, address: Optional[int], region: Region, + progress_type: LocationProgressType): + super(ShapezLocation, self).__init__(player, name, address, region) + self.progress_type = progress_type diff --git a/worlds/shapez/options.py b/worlds/shapez/options.py new file mode 100644 index 000000000000..bc3fc1ed2fbc --- /dev/null +++ b/worlds/shapez/options.py @@ -0,0 +1,310 @@ +import pkgutil +from dataclasses import dataclass + +import orjson + +from Options import Toggle, Choice, PerGameCommonOptions, NamedRange, Range +from .common.options import FloatRangeText + +datapackage_options = orjson.loads(pkgutil.get_data(__name__, "data/options.json")) +max_levels_and_upgrades = datapackage_options["max_levels_and_upgrades"] +max_shapesanity = datapackage_options["max_shapesanity"] +del datapackage_options + + +class Goal(Choice): + """Sets the goal of your world. + + - **Vanilla:** Complete level 26. + - **MAM:** Complete a specified level after level 26. Every level before that will be a location. It's recommended + to build a Make-Anything-Machine (MAM). + - **Even fasterer:** Upgrade everything to a specified tier after tier 8. Every upgrade before that will be a + location. + - **Efficiency III:** Deliver 256 blueprint shapes per second to the hub.""" + display_name = "Goal" + rich_text_doc = True + option_vanilla = 0 + option_mam = 1 + option_even_fasterer = 2 + option_efficiency_iii = 3 + default = 0 + + +class GoalAmount(NamedRange): + """Specify, what level or tier (when either MAM or Even Fasterer is chosen as goal) is required to reach the goal. + + If MAM is set as the goal, this has to be set to 27 or more. Else it will raise an error.""" + display_name = "Goal amount" + rich_text_doc = True + range_start = 9 + range_end = max_levels_and_upgrades + default = 27 + special_range_names = { + "minimum_mam": 27, + "recommended_mam": 50, + "long_game_mam": 120, + "minimum_even_fasterer": 9, + "recommended_even_fasterer": 16, + "long_play_even_fasterer": 35, + } + + +class RequiredShapesMultiplier(Range): + """Multiplies the amount of required shapes for levels and upgrades by value/10. + + For level 1, the amount of shapes ranges from 3 to 300. + + For level 26, it ranges from 5k to 500k.""" + display_name = "Required shapes multiplier" + rich_text_doc = True + range_start = 1 + range_end = 100 + default = 10 + + +class AllowFloatingLayers(Toggle): + """Toggle whether shape requirements are allowed to have floating layers (like the logo or the rocket shape). + + However, be aware that floating shapes make MAMs much more complex.""" + display_name = "Allow floating layers" + rich_text_doc = True + default = False + + +class RandomizeLevelRequirements(Toggle): + """Randomize the required shapes to complete levels.""" + display_name = "Randomize level requirements" + rich_text_doc = True + default = True + + +class RandomizeUpgradeRequirements(Toggle): + """Randomize the required shapes to buy upgrades.""" + display_name = "Randomize upgrade requirements" + rich_text_doc = True + default = True + + +class RandomizeLevelLogic(Choice): + """If level requirements are randomized, this sets how those random shapes are generated and how logic works for + levels. The shuffled variants shuffle the order of progression buildings obtained in the multiworld. The standard + order is: **cutter -> rotator -> painter -> color mixer -> stacker** + + - **Vanilla:** Level 1 requires nothing, 2-4 require the first building, 5-6 require also the second, 7-8 the + third, 9-10 the fourth, and 11 and onwards the fifth and thereby all buildings. + - **Stretched:** After every floor(maxlevel/6) levels, another building is required. + - **Quick:** Every Level, except level 1, requires another building, with level 6 and onwards requiring all + buildings. + - **Random steps:** After a random amount of levels, another building is required, with level 1 always requiring + none. This can potentially generate like any other option. + - **Hardcore:** All levels (except level 1) have completely random shape requirements and thus require all + buildings. Expect early BKs. + - **Dopamine (overflow):** All levels (except level 1 and the goal) require 2 random buildings (or none in case of + overflow).""" + display_name = "Randomize level logic" + rich_text_doc = True + option_vanilla = 0 + option_vanilla_shuffled = 1 + option_stretched = 2 + option_stretched_shuffled = 3 + option_quick = 4 + option_quick_shuffled = 5 + option_random_steps = 6 + option_random_steps_shuffled = 7 + option_hardcore = 8 + option_dopamine = 9 + option_dopamine_overflow = 10 + default = 2 + + +class RandomizeUpgradeLogic(Choice): + """If upgrade requirements are randomized, this sets how those random shapes are generated + and how logic works for upgrades. + + - **Vanilla-like:** Tier II requires up to two random buildings, III requires up to three random buildings, + and IV and onwards require all processing buildings. + - **Linear:** Tier II requires nothing, III-VI require another random building each, + and VII and onwards require all buildings. + - **Category:** Belt and miner upgrades require no building up to tier V, but onwards all buildings, processors + upgrades require the cutter (all tiers), rotator (tier III and onwards), and stacker (tier V and onwards), and + painting upgrades require the cutter, rotator, stacker, painter (all tiers) and color mixer (tiers V and onwards). + Tier VII and onwards will always require all buildings. + - **Category random:** Each upgrades category (up to tier VI) requires a random amount of buildings (in order), + with one category always requiring no buildings. Tier VII and onwards will always require all buildings. + - **Hardcore:** All tiers (except each tier II) have completely random shape requirements and thus require all + buildings. Expect early BKs.""" + display_name = "Randomize upgrade logic" + rich_text_doc = True + option_vanilla_like = 0 + option_linear = 1 + option_category = 2 + option_category_random = 3 + option_hardcore = 4 + default = 1 + + +class ThroughputLevelsRatio(NamedRange): + """If level requirements are randomized, this sets the ratio of how many levels (approximately) will require either + a total amount or per second amount (throughput) of shapes delivered. + + 0 means only total, 100 means only throughput, and vanilla (-1) means only levels 14, 27 and beyond have throughput. + """ + display_name = "Throughput levels ratio" + rich_text_doc = True + range_start = 0 + range_end = 100 + default = 0 + special_range_names = { + "vanilla": -1, + "only_total": 0, + "half_half": 50, + "only_throughput": 100, + } + + +class ComplexityGrowthGradient(FloatRangeText): + """If level requirements are randomized, this determines how fast complexity will grow each level. In other words: + The higher you set this value, the more difficult lategame shapes will be. + + Allowed values are floating numbers ranging from 0.0 to 10.0.""" + display_name = "Complexity growth gradient" + rich_text_doc = True + range_start = 0.0 + range_end = 10.0 + default = "0.5" + + +class SameLateUpgradeRequirements(Toggle): + """If upgrade requirements are randomized, should the last 3 shapes for each category be the same, + as in vanilla?""" + display_name = "Same late upgrade requirements" + rich_text_doc = True + default = True + + +class EarlyBalancerTunnelAndTrash(Choice): + """Makes the balancer, tunnel, and trash appear in earlier spheres. + + - **None:** Complete randomization. + - **5 buildings:** Should be accessible before getting all 5 main buildings. + - **3 buildings:** Should be accessible before getting the first 3 main buildings for levels and upgrades. + - **Sphere 1:** Always accessible from start. **Beware of generation failures.**""" + display_name = "Early balancer, tunnel, and trash" + rich_text_doc = True + option_none = 0 + option_5_buildings = 1 + option_3_buildings = 2 + option_sphere_1 = 3 + default = 2 + + +class LockBeltAndExtractor(Toggle): + """Locks Belts and Extractors and adds them to the item pool. + + **If you set this to true, achievements must also be included.**""" + display_name = "Lock Belt and Extractor" + rich_text_doc = True + default = False + + +class IncludeAchievements(Toggle): + """Include up to 45 achievements (depending on other options) as additional locations.""" + display_name = "Include Achievements" + rich_text_doc = True + default = True + + +class ExcludeSoftlockAchievements(Toggle): + """Exclude 6 achievements, that can become unreachable in a save file, if not achieved until a certain level.""" + display_name = "Exclude softlock achievements" + rich_text_doc = True + default = True + + +class ExcludeLongPlaytimeAchievements(Toggle): + """Exclude 2 achievements, that require actively playing for a really long time.""" + display_name = "Exclude long playtime achievements" + rich_text_doc = True + default = True + + +class ExcludeProgressionUnreasonable(Toggle): + """Exclude progression and useful items from being placed into softlock and long playtime achievements.""" + display_name = "Exclude progression items in softlock and long playtime achievements" + rich_text_doc = True + default = True + + +class ShapesanityAmount(Range): + """Amount of single-layer shapes that will be included as locations.""" + display_name = "Shapesanity amount" + rich_text_doc = True + range_start = 4 + range_end = max_shapesanity + default = 50 + + +class TrapsProbability(NamedRange): + """The probability of any filler item (in percent) being replaced by a trap.""" + display_name = "Traps Percentage" + rich_text_doc = True + range_start = 0 + range_end = 100 + default = 0 + special_range_names = { + "none": 0, + "rare": 4, + "occasionally": 10, + "maximum_suffering": 100, + } + + +class IncludeWhackyUpgrades(Toggle): + """Includes some very unusual upgrade items in generation (and logic), that greatly increase or decrease building + speeds. If the goal is set to Efficiency III or throughput levels ratio is not 0, decreasing upgrades (aka traps) + will always be disabled.""" + display_name = "Include Whacky Upgrades" + rich_text_doc = True + default = False + + +class SplitInventoryDrainingTrap(Toggle): + """If set to true, the inventory draining trap will be split into level, upgrade, and blueprint draining traps + instead of executing as one of those 3 randomly.""" + display_name = "Split Inventory Draining Trap" + rich_text_doc = True + default = False + + +class ToolbarShuffling(Toggle): + """If set to true, the toolbars (main and wires layer) will be shuffled (including bottom and top row). + However, keybindings will still select the same building to place.""" + display_name = "Toolbar Shuffling" + rich_text_doc = True + default = True + + +@dataclass +class ShapezOptions(PerGameCommonOptions): + goal: Goal + goal_amount: GoalAmount + required_shapes_multiplier: RequiredShapesMultiplier + allow_floating_layers: AllowFloatingLayers + randomize_level_requirements: RandomizeLevelRequirements + randomize_upgrade_requirements: RandomizeUpgradeRequirements + randomize_level_logic: RandomizeLevelLogic + randomize_upgrade_logic: RandomizeUpgradeLogic + throughput_levels_ratio: ThroughputLevelsRatio + complexity_growth_gradient: ComplexityGrowthGradient + same_late_upgrade_requirements: SameLateUpgradeRequirements + early_balancer_tunnel_and_trash: EarlyBalancerTunnelAndTrash + lock_belt_and_extractor: LockBeltAndExtractor + include_achievements: IncludeAchievements + exclude_softlock_achievements: ExcludeSoftlockAchievements + exclude_long_playtime_achievements: ExcludeLongPlaytimeAchievements + exclude_progression_unreasonable: ExcludeProgressionUnreasonable + shapesanity_amount: ShapesanityAmount + traps_percentage: TrapsProbability + include_whacky_upgrades: IncludeWhackyUpgrades + split_inventory_draining_trap: SplitInventoryDrainingTrap + toolbar_shuffling: ToolbarShuffling diff --git a/worlds/shapez/presets.py b/worlds/shapez/presets.py new file mode 100644 index 000000000000..e01192d594e9 --- /dev/null +++ b/worlds/shapez/presets.py @@ -0,0 +1,49 @@ +from .options import max_levels_and_upgrades, max_shapesanity + +options_presets = { + "Most vanilla": { + "goal": "vanilla", + "randomize_level_requirements": False, + "randomize_upgrade_requirements": False, + "early_balancer_tunnel_and_trash": "3_buildings", + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "shapesanity_amount": 4, + "toolbar_shuffling": False, + }, + "Minimum checks": { + "goal": "vanilla", + "include_achievements": False, + "shapesanity_amount": 4 + }, + "Maximum checks": { + "goal": "even_fasterer", + "goal_amount": max_levels_and_upgrades, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "shapesanity_amount": max_shapesanity + }, + "Restrictive start": { + "goal": "vanilla", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": "hardcore", + "randomize_upgrade_logic": "hardcore", + "early_balancer_tunnel_and_trash": "sphere_1", + "include_achievements": False, + "shapesanity_amount": 4 + }, + "Quick game": { + "goal": "efficiency_iii", + "required_shapes_multiplier": 1, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": "hardcore", + "randomize_upgrade_logic": "hardcore", + "include_achievements": False, + "shapesanity_amount": 4, + "include_whacky_upgrades": True, + } +} diff --git a/worlds/shapez/regions.py b/worlds/shapez/regions.py new file mode 100644 index 000000000000..c4ca1d0c816e --- /dev/null +++ b/worlds/shapez/regions.py @@ -0,0 +1,277 @@ +from typing import Dict, Tuple, List + +from BaseClasses import Region, MultiWorld, LocationProgressType, ItemClassification, CollectionState +from .items import ShapezItem +from .locations import ShapezLocation +from .data.strings import ITEMS, REGIONS, GOALS, LOCATIONS, OPTIONS +from worlds.generic.Rules import add_rule + +shapesanity_processing = [REGIONS.full, REGIONS.half, REGIONS.piece, REGIONS.stitched, REGIONS.east_wind, + REGIONS.half_half, REGIONS.col_east_wind, REGIONS.col_half_half, REGIONS.col_full, + REGIONS.col_half] +shapesanity_coloring = [REGIONS.uncol, REGIONS.painted, REGIONS.mixed] + +all_regions = [ + REGIONS.menu, REGIONS.belt, REGIONS.extract, REGIONS.main, + REGIONS.levels_1, REGIONS.levels_2, REGIONS.levels_3, REGIONS.levels_4, REGIONS.levels_5, + REGIONS.upgrades_1, REGIONS.upgrades_2, REGIONS.upgrades_3, REGIONS.upgrades_4, REGIONS.upgrades_5, + REGIONS.paint_not_quad, REGIONS.cut_not_quad, REGIONS.rotate_cw, REGIONS.stack_shape, REGIONS.store_shape, + REGIONS.trash_shape, REGIONS.blueprint, REGIONS.wiring, REGIONS.mam, REGIONS.any_building, + REGIONS.all_buildings, REGIONS.all_buildings_x1_6_belt, + *[REGIONS.sanity(processing, coloring) + for processing in shapesanity_processing + for coloring in shapesanity_coloring], +] + + +def can_cut_half(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.cutter, player) + + +def can_rotate_90(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.rotator, ITEMS.rotator_ccw), player) + + +def can_rotate_180(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.rotator, ITEMS.rotator_ccw, ITEMS.rotator_180), player) + + +def can_stack(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.stacker, player) + + +def can_paint(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.painter, ITEMS.painter_double), player) or can_use_quad_painter(state, player) + + +def can_mix_colors(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.color_mixer, player) + + +def has_tunnel(state: CollectionState, player: int) -> bool: + return state.has_any((ITEMS.tunnel, ITEMS.tunnel_tier_ii), player) + + +def has_balancer(state: CollectionState, player: int) -> bool: + return state.has(ITEMS.balancer, player) or state.has_all((ITEMS.comp_merger, ITEMS.comp_splitter), player) + + +def can_use_quad_painter(state: CollectionState, player: int) -> bool: + return (state.has_all((ITEMS.painter_quad, ITEMS.wires), player) and + state.has_any((ITEMS.switch, ITEMS.const_signal), player)) + + +def can_make_stitched_shape(state: CollectionState, player: int, floating: bool) -> bool: + return (can_stack(state, player) and + ((state.has(ITEMS.cutter_quad, player) and not floating) or + (can_cut_half(state, player) and can_rotate_90(state, player)))) + + +def can_build_mam(state: CollectionState, player: int, floating: bool) -> bool: + return (can_make_stitched_shape(state, player, floating) and can_paint(state, player) and + can_mix_colors(state, player) and has_balancer(state, player) and has_tunnel(state, player) and + state.has_all((ITEMS.belt_reader, ITEMS.storage, ITEMS.item_filter, + ITEMS.wires, ITEMS.logic_gates, ITEMS.virtual_proc), player)) + + +def can_make_east_windmill(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return (can_stack(state, player) and + (state.has(ITEMS.cutter_quad, player) or (can_cut_half(state, player) and can_rotate_180(state, player)))) + + +def can_make_half_half_shape(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return can_stack(state, player) and state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player) + + +def can_make_half_shape(state: CollectionState, player: int) -> bool: + # Only used for shapesanity => single layers + return can_cut_half(state, player) or state.has_all((ITEMS.cutter_quad, ITEMS.stacker), player) + + +def has_x_belt_multiplier(state: CollectionState, player: int, needed: float) -> bool: + # Assumes there are no upgrade traps + multiplier = 1.0 + # Rising upgrades do the least improvement if received before other upgrades + for _ in range(state.count(ITEMS.upgrade_rising_belt, player)): + multiplier *= 2 + multiplier += state.count(ITEMS.upgrade_gigantic_belt, player)*10 + multiplier += state.count(ITEMS.upgrade_big_belt, player) + multiplier += state.count(ITEMS.upgrade_small_belt, player)*0.1 + return multiplier >= needed + + +def has_logic_list_building(state: CollectionState, player: int, buildings: List[str], index: int, + includeuseful: bool) -> bool: + + # Includes balancer, tunnel, and trash in logic in order to make them appear in earlier spheres + if includeuseful and not (state.has(ITEMS.trash, player) and has_balancer(state, player) and + has_tunnel(state, player)): + return False + + if buildings[index] == ITEMS.cutter: + if buildings.index(ITEMS.stacker) < index: + return state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player) + else: + return can_cut_half(state, player) + elif buildings[index] == ITEMS.rotator: + return can_rotate_90(state, player) + elif buildings[index] == ITEMS.stacker: + return can_stack(state, player) + elif buildings[index] == ITEMS.painter: + return can_paint(state, player) + elif buildings[index] == ITEMS.color_mixer: + return can_mix_colors(state, player) + + +def create_shapez_regions(player: int, multiworld: MultiWorld, floating: bool, + included_locations: Dict[str, Tuple[str, LocationProgressType]], + location_name_to_id: Dict[str, int], level_logic_buildings: List[str], + upgrade_logic_buildings: List[str], early_useful: str, goal: str) -> List[Region]: + """Creates and returns a list of all regions with entrances and all locations placed correctly.""" + regions: Dict[str, Region] = {name: Region(name, player, multiworld) for name in all_regions} + + # Creates ShapezLocations for every included location and puts them into the correct region + for name, data in included_locations.items(): + regions[data[0]].locations.append(ShapezLocation(player, name, location_name_to_id[name], + regions[data[0]], data[1])) + + # Create goal event + if goal in [GOALS.vanilla, GOALS.mam]: + goal_region = regions[REGIONS.levels_5] + elif goal == GOALS.even_fasterer: + goal_region = regions[REGIONS.upgrades_5] + else: + goal_region = regions[REGIONS.all_buildings] + goal_location = ShapezLocation(player, LOCATIONS.goal, None, goal_region, LocationProgressType.DEFAULT) + goal_location.place_locked_item(ShapezItem(ITEMS.goal, ItemClassification.progression_skip_balancing, None, player)) + if goal == GOALS.efficiency_iii: + add_rule(goal_location, lambda state: has_x_belt_multiplier(state, player, 8)) + goal_region.locations.append(goal_location) + multiworld.completion_condition[player] = lambda state: state.has(ITEMS.goal, player) + + # Connect Menu to rest of regions + regions[REGIONS.menu].connect(regions[REGIONS.belt], "Placing belts", lambda state: state.has(ITEMS.belt, player)) + regions[REGIONS.menu].connect(regions[REGIONS.extract], "Extracting shapes from patches", + lambda state: state.has_any((ITEMS.extractor, ITEMS.extractor_chain), player)) + regions[REGIONS.extract].connect( + regions[REGIONS.main], "Transporting shapes over the canvas", + lambda state: state.has_any((ITEMS.belt, ITEMS.comp_merger, ITEMS.comp_splitter), player) + ) + + # Connect achievement regions + regions[REGIONS.main].connect(regions[REGIONS.paint_not_quad], "Painting with (double) painter", + lambda state: state.has_any((ITEMS.painter, ITEMS.painter_double), player)) + regions[REGIONS.extract].connect(regions[REGIONS.cut_not_quad], "Cutting with half cutter", + lambda state: can_cut_half(state, player)) + regions[REGIONS.extract].connect(regions[REGIONS.rotate_cw], "Rotating clockwise", + lambda state: state.has(ITEMS.rotator, player)) + regions[REGIONS.extract].connect(regions[REGIONS.stack_shape], "Stacking shapes", + lambda state: can_stack(state, player)) + regions[REGIONS.extract].connect(regions[REGIONS.store_shape], "Storing shapes", + lambda state: state.has(ITEMS.storage, player)) + regions[REGIONS.extract].connect(regions[REGIONS.trash_shape], "Trashing shapes", + lambda state: state.has(ITEMS.trash, player)) + regions[REGIONS.main].connect(regions[REGIONS.blueprint], "Copying and placing blueprints", + lambda state: state.has(ITEMS.blueprints, player) and + can_make_stitched_shape(state, player, floating) and + can_paint(state, player) and can_mix_colors(state, player)) + regions[REGIONS.menu].connect(regions[REGIONS.wiring], "Using the wires layer", + lambda state: state.has(ITEMS.wires, player)) + regions[REGIONS.main].connect(regions[REGIONS.mam], "Building a MAM", + lambda state: can_build_mam(state, player, floating)) + regions[REGIONS.menu].connect(regions[REGIONS.any_building], "Placing any building", lambda state: state.has_any(( + ITEMS.belt, ITEMS.balancer, ITEMS.comp_merger, ITEMS.comp_splitter, ITEMS.tunnel, ITEMS.tunnel_tier_ii, + ITEMS.extractor, ITEMS.extractor_chain, ITEMS.cutter, ITEMS.cutter_quad, ITEMS.rotator, ITEMS.rotator_ccw, + ITEMS.rotator_180, ITEMS.stacker, ITEMS.painter, ITEMS.painter_double, ITEMS.painter_quad, ITEMS.color_mixer, + ITEMS.trash, ITEMS.belt_reader, ITEMS.storage, ITEMS.switch, ITEMS.item_filter, ITEMS.display, ITEMS.wires + ), player)) + regions[REGIONS.main].connect(regions[REGIONS.all_buildings], "Using all main buildings", + lambda state: can_make_stitched_shape(state, player, floating) and + can_paint(state, player) and can_mix_colors(state, player)) + regions[REGIONS.all_buildings].connect(regions[REGIONS.all_buildings_x1_6_belt], + "Delivering per second with 1.6x belt speed", + lambda state: has_x_belt_multiplier(state, player, 1.6)) + + # Progressively connect level and upgrade regions + regions[REGIONS.main].connect( + regions[REGIONS.levels_1], "Using first level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 0, False)) + regions[REGIONS.levels_1].connect( + regions[REGIONS.levels_2], "Using second level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 1, False)) + regions[REGIONS.levels_2].connect( + regions[REGIONS.levels_3], "Using third level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 2, + early_useful == OPTIONS.buildings_3)) + regions[REGIONS.levels_3].connect( + regions[REGIONS.levels_4], "Using fourth level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 3, False)) + regions[REGIONS.levels_4].connect( + regions[REGIONS.levels_5], "Using fifth level building", + lambda state: has_logic_list_building(state, player, level_logic_buildings, 4, + early_useful == OPTIONS.buildings_5)) + regions[REGIONS.main].connect( + regions[REGIONS.upgrades_1], "Using first upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 0, False)) + regions[REGIONS.upgrades_1].connect( + regions[REGIONS.upgrades_2], "Using second upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 1, False)) + regions[REGIONS.upgrades_2].connect( + regions[REGIONS.upgrades_3], "Using third upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 2, + early_useful == OPTIONS.buildings_3)) + regions[REGIONS.upgrades_3].connect( + regions[REGIONS.upgrades_4], "Using fourth upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 3, False)) + regions[REGIONS.upgrades_4].connect( + regions[REGIONS.upgrades_5], "Using fifth upgrade building", + lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 4, + early_useful == OPTIONS.buildings_5)) + + # Connect Uncolored shapesanity regions to Main + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.full, REGIONS.uncol)], "Delivering unprocessed", lambda state: True) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.half, REGIONS.uncol)], "Cutting in single half", + lambda state: can_make_half_shape(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.piece, REGIONS.uncol)], "Cutting in single piece", + lambda state: (can_cut_half(state, player) and can_rotate_90(state, player)) or + state.has(ITEMS.cutter_quad, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.half_half, REGIONS.uncol)], "Cutting and stacking into two halves", + lambda state: can_make_half_half_shape(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.stitched, REGIONS.uncol)], "Stitching complex shapes", + lambda state: can_make_stitched_shape(state, player, floating)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.east_wind, REGIONS.uncol)], "Rotating and stitching a single windmill half", + lambda state: can_make_east_windmill(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_full, REGIONS.uncol)], "Painting with a quad painter or stitching", + lambda state: can_make_stitched_shape(state, player, floating) or can_use_quad_painter(state, player)) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_east_wind, REGIONS.uncol)], "Why windmill, why?", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_east_windmill(state, player))) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_half_half, REGIONS.uncol)], "Quad painting a half-half shape", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_half_half_shape(state, player))) + regions[REGIONS.main].connect( + regions[REGIONS.sanity(REGIONS.col_half, REGIONS.uncol)], "Quad painting a half shape", + lambda state: can_make_stitched_shape(state, player, floating) or + (can_use_quad_painter(state, player) and can_make_half_shape(state, player))) + + # Progressively connect colored shapesanity regions + for processing in shapesanity_processing: + regions[REGIONS.sanity(processing, REGIONS.uncol)].connect( + regions[REGIONS.sanity(processing, REGIONS.painted)], f"Painting a {processing.lower()} shape", + lambda state: can_paint(state, player)) + regions[REGIONS.sanity(processing, REGIONS.painted)].connect( + regions[REGIONS.sanity(processing, REGIONS.mixed)], f"Mixing colors for a {processing.lower()} shape", + lambda state: can_mix_colors(state, player)) + + return [region for region in regions.values() if len(region.locations) or len(region.exits)] diff --git a/worlds/shapez/test/__init__.py b/worlds/shapez/test/__init__.py new file mode 100644 index 000000000000..d2dfad97da6f --- /dev/null +++ b/worlds/shapez/test/__init__.py @@ -0,0 +1,203 @@ +from unittest import TestCase + +from test.bases import WorldTestBase +from .. import options_presets, ShapezWorld +from ..data.strings import GOALS, OTHER, ITEMS, LOCATIONS, CATEGORY, OPTIONS, SHAPESANITY +from ..options import max_levels_and_upgrades, max_shapesanity + + +class ShapezTestBase(WorldTestBase): + game = OTHER.game_name + world: ShapezWorld + + def test_location_count(self): + self.assertTrue(self.world.location_count > 0, + f"location_count is {self.world.location_count} for some reason.") + + def test_logic_lists(self): + logic_buildings = [ITEMS.cutter, ITEMS.rotator, ITEMS.painter, ITEMS.color_mixer, ITEMS.stacker] + for building in logic_buildings: + count = self.world.level_logic.count(building) + self.assertTrue(count == 1, f"{building} was found {count} times in level_logic.") + count = self.world.upgrade_logic.count(building) + self.assertTrue(count == 1, f"{building} was found {count} times in upgrade_logic.") + self.assertTrue(len(self.world.level_logic) == 5, + f"level_logic contains {len(self.world.level_logic)} entries instead of the expected 5.") + self.assertTrue(len(self.world.upgrade_logic) == 5, + f"upgrade_logic contains {len(self.world.upgrade_logic)} entries instead of the expected 5.") + + def test_random_logic_phase_length(self): + self.assertTrue(len(self.world.random_logic_phase_length) == 5, + f"random_logic_phase_length contains {len(self.world.random_logic_phase_length)} entries " + + f"instead of the expected 5.") + self.assertTrue(sum(self.world.random_logic_phase_length) < self.world.maxlevel, + f"The sum of all random phase lengths is greater than allowed: " + + str(sum(self.world.random_logic_phase_length))) + for length in self.world.random_logic_phase_length: + self.assertTrue(length in range(self.world.maxlevel), + f"Found an illegal value in random_logic_phase_length: {length}") + + def test_category_random_logic_amounts(self): + self.assertTrue(len(self.world.category_random_logic_amounts) == 4, + f"Found {len(self.world.category_random_logic_amounts)} instead of 4 keys in " + f"category_random_logic_amounts.") + self.assertTrue(min(self.world.category_random_logic_amounts.values()) == 0, + "Found a value less than or no 0 in category_random_logic_amounts.") + self.assertTrue(max(self.world.category_random_logic_amounts.values()) <= 5, + "Found a value greater than 5 in category_random_logic_amounts.") + + def test_maxlevel_and_finaltier(self): + self.assertTrue(self.world.maxlevel in range(25, max_levels_and_upgrades), + f"Found an illegal value for maxlevel: {self.world.maxlevel}") + self.assertTrue(self.world.finaltier in range(8, max_levels_and_upgrades+1), + f"Found an illegal value for finaltier: {self.world.finaltier}") + + def test_included_locations(self): + self.assertTrue(len(self.world.included_locations) > 0, "Found no locations cached in included_locations.") + self.assertTrue(LOCATIONS.level(1) in self.world.included_locations.keys(), + "Could not find Level 1 (guraranteed location) cached in included_locations.") + self.assertTrue(LOCATIONS.upgrade(CATEGORY.belt, "II") in self.world.included_locations.keys(), + "Could not find Belt Upgrade Tier II (guraranteed location) cached in included_locations.") + self.assertTrue(LOCATIONS.shapesanity(1) in self.world.included_locations.keys(), + "Could not find Shapesanity 1 (guraranteed location) cached in included_locations.") + + def test_shapesanity_names(self): + names_length = len(self.world.shapesanity_names) + locations_length = len([0 for loc in self.multiworld.get_locations(self.player) if "Shapesanity" in loc.name]) + self.assertEqual(names_length, locations_length, + f"The amount of shapesanity names ({names_length}) does not match the amount of included " + + f"shapesanity locations ({locations_length}).") + self.assertTrue(SHAPESANITY.full(SHAPESANITY.uncolored, SHAPESANITY.circle) in self.world.shapesanity_names, + "Uncolored Circle is guaranteed but was not found in shapesanity_names.") + + def test_efficiency_iii_no_softlock(self): + if self.world.options.goal == GOALS.efficiency_iii: + for item in self.multiworld.itempool: + self.assertFalse(item.name.endswith("Upgrade Trap"), + "Item pool contains an upgrade trap, which could make the efficiency_iii goal " + "unreachable if collected.") + + +class TestGlobalOptionsImport(TestCase): + + def test_global_options_import(self): + self.assertTrue(isinstance(max_levels_and_upgrades, int), f"The global option max_levels_and_upgrades is not " + + f"an integer, but instead a " + + f"{type(max_levels_and_upgrades)}.") + self.assertTrue(max_levels_and_upgrades >= 27, f"max_levels_and_upgrades must be at least 27, but is " + + f"{max_levels_and_upgrades} instead.") + self.assertTrue(isinstance(max_shapesanity, int), f"The global option max_shapesanity is not an integer, but " + + f"instead a {type(max_levels_and_upgrades)}.") + self.assertTrue(max_shapesanity >= 4, f"max_shapesanity must be at least 4, but is " + + f"{max_levels_and_upgrades} instead.") + + +# The following unittests are intended to test all code paths of the generator + +class TestAllRelevantOptions1(ShapezTestBase): + options = { + "goal": GOALS.vanilla, + "randomize_level_requirements": False, + "randomize_upgrade_requirements": False, + "complexity_growth_gradient": "0.1234", + "early_balancer_tunnel_and_trash": "none", + "lock_belt_and_extractor": True, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "exclude_progression_unreasonable": True, + "shapesanity_amount": max_shapesanity, + "traps_percentage": "random" + } + + +class TestAllRelevantOptions2(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": max_levels_and_upgrades, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": OPTIONS.logic_random_steps, + "randomize_upgrade_logic": OPTIONS.logic_vanilla_like, + "complexity_growth_gradient": "2", + "early_balancer_tunnel_and_trash": OPTIONS.buildings_5, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": False, + "exclude_long_playtime_achievements": False, + "exclude_progression_unreasonable": False, + "shapesanity_amount": 4, + "traps_percentage": 0 + } + + +class TestAllRelevantOptions3(ShapezTestBase): + options = { + "goal": GOALS.even_fasterer, + "goal_amount": max_levels_and_upgrades, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_vanilla}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_linear, + "complexity_growth_gradient": "1e-003", + "early_balancer_tunnel_and_trash": OPTIONS.buildings_3, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": 100, + "include_whacky_upgrades": True, + "split_inventory_draining_trap": True + } + + +class TestAllRelevantOptions4(ShapezTestBase): + options = { + "goal": GOALS.efficiency_iii, + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_stretched}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_category, + "early_balancer_tunnel_and_trash": OPTIONS.sphere_1, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": "random", + "include_whacky_upgrades": True, + } + + +class TestAllRelevantOptions5(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": "random-range-27-500", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": f"{OPTIONS.logic_quick}_shuffled", + "randomize_upgrade_logic": OPTIONS.logic_category_random, + "lock_belt_and_extractor": False, + "include_achievements": True, + "exclude_softlock_achievements": True, + "exclude_long_playtime_achievements": True, + "shapesanity_amount": "random", + "traps_percentage": 100, + "split_inventory_draining_trap": False + } + + +class TestAllRelevantOptions6(ShapezTestBase): + options = { + "goal": GOALS.mam, + "goal_amount": "random-range-27-500", + "randomize_level_requirements": True, + "randomize_upgrade_requirements": True, + "randomize_level_logic": OPTIONS.logic_hardcore, + "randomize_upgrade_logic": OPTIONS.logic_hardcore, + "lock_belt_and_extractor": False, + "include_achievements": False, + "shapesanity_amount": "random", + "traps_percentage": "random" + } diff --git a/worlds/shivers/__init__.py b/worlds/shivers/__init__.py index 85f2cf1861a7..dd941b9212bb 100644 --- a/worlds/shivers/__init__.py +++ b/worlds/shivers/__init__.py @@ -245,7 +245,7 @@ def pre_fill(self) -> None: storage_items += [self.create_item("Empty") for _ in range(3)] - state = self.multiworld.get_all_state(False) + state = self.multiworld.get_all_state(False, True, False) self.random.shuffle(storage_locs) self.random.shuffle(storage_items) @@ -255,6 +255,27 @@ def pre_fill(self) -> None: self.storage_placements = {location.name.replace("Storage: ", ""): location.item.name.replace(" DUPE", "") for location in storage_locs} + def get_pre_fill_items(self) -> List[Item]: + if self.options.full_pots == "pieces": + return [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_DUPLICATE] + elif self.options.full_pots == "complete": + return [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_COMPLETE_DUPLICATE] + else: + pool = [] + pieces = [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_DUPLICATE] + complete = [self.create_item(name) for name, data in item_table.items() if + data.type == ItemType.POT_COMPLETE_DUPLICATE] + for i in range(10): + if self.pot_completed_list[i] == 0: + pool.append(pieces[i]) + pool.append(pieces[i + 10]) + else: + pool.append(complete[i]) + return pool + def fill_slot_data(self) -> dict: return { "StoragePlacements": self.storage_placements, diff --git a/worlds/sm/variaRandomizer/rom/rom.py b/worlds/sm/variaRandomizer/rom/rom.py index f0f37b76a37e..05218ff52a58 100644 --- a/worlds/sm/variaRandomizer/rom/rom.py +++ b/worlds/sm/variaRandomizer/rom/rom.py @@ -89,9 +89,12 @@ def fillToNextBank(self): class FakeROM(ROM): # to have the same code for real ROM and the webservice - def __init__(self, data={}): + def __init__(self, data=None): super(FakeROM, self).__init__() - self.data = data + if data is None: + self.data = {} + else: + self.data = data self.ipsPatches = [] def write(self, bytes): diff --git a/worlds/smw/CHANGELOG.md b/worlds/smw/CHANGELOG.md index 7f62997adcef..f1e031197c9f 100644 --- a/worlds/smw/CHANGELOG.md +++ b/worlds/smw/CHANGELOG.md @@ -1,6 +1,15 @@ # Super Mario World - Changelog +## v2.1 + +### Features: +- Trap Link + - When you receive a trap, you send a copy of it to every other player with Trap Link enabled +- Ring Link + - Any coin amounts gained and lost by a linked player will be instantly shared with all other active linked players + + ## v2.0 ### Features: diff --git a/worlds/smw/Client.py b/worlds/smw/Client.py index 600e1bff8304..85524eb7ad41 100644 --- a/worlds/smw/Client.py +++ b/worlds/smw/Client.py @@ -1,9 +1,11 @@ import logging import time +from typing import Any -from NetUtils import ClientStatus, color +from NetUtils import ClientStatus, NetworkItem, color from worlds.AutoSNIClient import SNIClient -from .Names.TextBox import generate_received_text +from .Names.TextBox import generate_received_text, generate_received_trap_link_text +from .Items import trap_value_to_name, trap_name_to_value snes_logger = logging.getLogger("SNES") @@ -42,10 +44,13 @@ SMW_HIDDEN_1UP_ACTIVE_ADDR = ROM_START + 0x01BFA9 SMW_BONUS_BLOCK_ACTIVE_ADDR = ROM_START + 0x01BFAA SMW_BLOCKSANITY_ACTIVE_ADDR = ROM_START + 0x01BFAB +SMW_TRAP_LINK_ACTIVE_ADDR = ROM_START + 0x01BFB7 +SMW_RING_LINK_ACTIVE_ADDR = ROM_START + 0x01BFB8 SMW_GAME_STATE_ADDR = WRAM_START + 0x100 SMW_MARIO_STATE_ADDR = WRAM_START + 0x71 +SMW_COIN_COUNT_ADDR = WRAM_START + 0xDBF SMW_BOSS_STATE_ADDR = WRAM_START + 0xD9B SMW_ACTIVE_BOSS_ADDR = WRAM_START + 0x13FC SMW_CURRENT_LEVEL_ADDR = WRAM_START + 0x13BF @@ -76,6 +81,7 @@ class SMWSNIClient(SNIClient): game = "Super Mario World" patch_suffix = ".apsmw" + slot_data: dict[str, Any] | None async def deathlink_kill_player(self, ctx): from SNIClient import DeathState, snes_buffered_write, snes_flush_writes, snes_read @@ -111,6 +117,84 @@ async def deathlink_kill_player(self, ctx): ctx.last_death_link = time.time() + def on_package(self, ctx: SNIClient, cmd: str, args: dict[str, Any]) -> None: + super().on_package(ctx, cmd, args) + + if cmd == "Connected": + self.slot_data = args.get("slot_data", None) + + if cmd != "Bounced": + return + if "tags" not in args: + return + + if not hasattr(self, "instance_id"): + self.instance_id = time.time() + + source_name = args["data"]["source"] + if "TrapLink" in ctx.tags and "TrapLink" in args["tags"] and source_name != ctx.slot_info[ctx.slot].name: + trap_name: str = args["data"]["trap_name"] + if trap_name not in trap_name_to_value: + # We don't know how to handle this trap, ignore it + return + + trap_id: int = trap_name_to_value[trap_name] + + if "trap_weights" not in self.slot_data: + return + + if f"{trap_id}" not in self.slot_data["trap_weights"]: + return + + if self.slot_data["trap_weights"][f"{trap_id}"] == 0: + # The player disabled this trap type + return + + self.priority_trap = NetworkItem(trap_id, None, None) + self.priority_trap_message = generate_received_trap_link_text(trap_name, source_name) + self.priority_trap_message_str = f"Received linked {trap_name} from {source_name}" + elif "RingLink" in ctx.tags and "RingLink" in args["tags"] and source_name != self.instance_id: + if not hasattr(self, "pending_ring_link"): + self.pending_ring_link = 0 + self.pending_ring_link += args["data"]["amount"] + + async def send_trap_link(self, ctx: SNIClient, trap_name: str): + if "TrapLink" not in ctx.tags or ctx.slot == None: + return + + await ctx.send_msgs([{ + "cmd": "Bounce", "tags": ["TrapLink"], + "data": { + "time": time.time(), + "source": ctx.player_names[ctx.slot], + "trap_name": trap_name + } + }]) + snes_logger.info(f"Sent linked {trap_name}") + + async def send_ring_link(self, ctx: SNIClient, amount: int): + from SNIClient import DeathState, snes_buffered_write, snes_flush_writes, snes_read + + if "RingLink" not in ctx.tags or ctx.slot == None: + return + + game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) + if game_state[0] != 0x14: + return + + if not hasattr(self, "instance_id"): + self.instance_id = time.time() + + await ctx.send_msgs([{ + "cmd": "Bounce", "tags": ["RingLink"], + "data": { + "time": time.time(), + "source": self.instance_id, + "amount": amount + } + }]) + + async def validate_rom(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -123,9 +207,11 @@ async def validate_rom(self, ctx): receive_option = await snes_read(ctx, SMW_RECEIVE_MSG_DATA, 0x1) send_option = await snes_read(ctx, SMW_SEND_MSG_DATA, 0x1) + trap_link = await snes_read(ctx, SMW_TRAP_LINK_ACTIVE_ADDR, 0x1) ctx.receive_option = receive_option[0] ctx.send_option = send_option[0] + ctx.trap_link = trap_link[0] ctx.allow_collect = True @@ -133,6 +219,15 @@ async def validate_rom(self, ctx): if death_link: await ctx.update_death_link(bool(death_link[0] & 0b1)) + if trap_link and bool(trap_link[0] & 0b1) and "TrapLink" not in ctx.tags: + ctx.tags.add("TrapLink") + await ctx.send_msgs([{"cmd": "ConnectUpdate", "tags": ctx.tags}]) + + ring_link = await snes_read(ctx, SMW_RING_LINK_ACTIVE_ADDR, 1) + if ring_link and bool(ring_link[0] & 0b1) and "RingLink" not in ctx.tags: + ctx.tags.add("RingLink") + await ctx.send_msgs([{"cmd": "ConnectUpdate", "tags": ctx.tags}]) + if ctx.rom != rom_name: ctx.current_sublevel_value = 0 @@ -142,12 +237,17 @@ async def validate_rom(self, ctx): def add_message_to_queue(self, new_message): - if not hasattr(self, "message_queue"): self.message_queue = [] self.message_queue.append(new_message) + def add_message_to_queue_front(self, new_message): + if not hasattr(self, "message_queue"): + self.message_queue = [] + + self.message_queue.insert(0, new_message) + async def handle_message_queue(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -206,7 +306,8 @@ def should_show_message(self, ctx, next_item): async def handle_trap_queue(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read - if not hasattr(self, "trap_queue") or len(self.trap_queue) == 0: + if (not hasattr(self, "trap_queue") or len(self.trap_queue) == 0) and\ + (not hasattr(self, "priority_trap") or self.priority_trap == 0): return game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) @@ -221,7 +322,24 @@ async def handle_trap_queue(self, ctx): if pause_state[0] != 0x00: return - next_trap, message = self.trap_queue.pop(0) + + next_trap = None + message = bytearray() + message_str = "" + from_queue = False + + if getattr(self, "priority_trap", None) and self.priority_trap.item != 0: + next_trap = self.priority_trap + message = self.priority_trap_message + message_str = self.priority_trap_message_str + self.priority_trap = None + self.priority_trap_message = bytearray() + self.priority_trap_message_str = "" + elif hasattr(self, "trap_queue") and len(self.trap_queue) > 0: + from_queue = True + next_trap, message = self.trap_queue.pop(0) + else: + return from .Rom import trap_rom_data if next_trap.item in trap_rom_data: @@ -231,16 +349,22 @@ async def handle_trap_queue(self, ctx): # Timer Trap if trap_active[0] == 0 or (trap_active[0] == 1 and trap_active[1] == 0 and trap_active[2] == 0): # Trap already active - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return else: + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0], bytes([0x01])) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0] + 1, bytes([0x00])) snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0] + 2, bytes([0x00])) else: if trap_active[0] > 0: # Trap already active - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return else: if next_trap.item == 0xBC001D: @@ -248,12 +372,18 @@ async def handle_trap_queue(self, ctx): # Do not fire if the previous thwimp hasn't reached the player's Y pos active_thwimp = await snes_read(ctx, SMW_ACTIVE_THWIMP_ADDR, 0x1) if active_thwimp[0] != 0xFF: - self.add_trap_to_queue(next_trap, message) + if from_queue: + self.add_trap_to_queue(next_trap, message) return verify_game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1) if verify_game_state[0] == 0x14 and len(trap_rom_data[next_trap.item]) > 2: snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([trap_rom_data[next_trap.item][2]])) + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) + new_item_count = trap_rom_data[next_trap.item][1] snes_buffered_write(ctx, WRAM_START + trap_rom_data[next_trap.item][0], bytes([new_item_count])) @@ -270,9 +400,75 @@ async def handle_trap_queue(self, ctx): return if self.should_show_message(ctx, next_trap): + self.add_message_to_queue_front(message) + elif next_trap.item == 0xBC0015: + if self.should_show_message(ctx, next_trap): + self.add_message_to_queue_front(message) + if len(message_str) > 0: + snes_logger.info(message_str) + if "TrapLink" in ctx.tags and from_queue: + await self.send_trap_link(ctx, trap_value_to_name[next_trap.item]) + + # Handle Literature Trap + from .Names.LiteratureTrap import lit_trap_text_list + import random + rand_trap = random.choice(lit_trap_text_list) + + for message in rand_trap: self.add_message_to_queue(message) + async def handle_ring_link(self, ctx): + from SNIClient import snes_buffered_write, snes_flush_writes, snes_read + + if "RingLink" not in ctx.tags: + return + + if not hasattr(self, "prev_coins"): + self.prev_coins = 0 + + curr_coins_byte = await snes_read(ctx, SMW_COIN_COUNT_ADDR, 0x1) + curr_coins = curr_coins_byte[0] + + if curr_coins < self.prev_coins: + # Coins rolled over from 1-Up + curr_coins += 100 + + coins_diff = curr_coins - self.prev_coins + if coins_diff > 0: + await self.send_ring_link(ctx, coins_diff) + self.prev_coins = curr_coins % 100 + + new_coins = curr_coins + if not hasattr(self, "pending_ring_link"): + self.pending_ring_link = 0 + + if self.pending_ring_link != 0: + new_coins += self.pending_ring_link + new_coins = max(new_coins, 0) + + new_1_ups = 0 + while new_coins >= 100: + new_1_ups += 1 + new_coins -= 100 + + if new_1_ups > 0: + curr_lives_inc_byte = await snes_read(ctx, WRAM_START + 0x18E4, 0x1) + curr_lives_inc = curr_lives_inc_byte[0] + new_lives_inc = curr_lives_inc + new_1_ups + snes_buffered_write(ctx, WRAM_START + 0x18E4, bytes([new_lives_inc])) + + snes_buffered_write(ctx, SMW_COIN_COUNT_ADDR, bytes([new_coins])) + if self.pending_ring_link > 0: + snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([0x01])) + else: + snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([0x2A])) + self.pending_ring_link = 0 + self.prev_coins = new_coins + + await snes_flush_writes(ctx) + + async def game_watcher(self, ctx): from SNIClient import snes_buffered_write, snes_flush_writes, snes_read @@ -333,6 +529,7 @@ async def game_watcher(self, ctx): await self.handle_message_queue(ctx) await self.handle_trap_queue(ctx) + await self.handle_ring_link(ctx) new_checks = [] event_data = await snes_read(ctx, SMW_EVENT_ROM_DATA, 0x60) @@ -506,7 +703,7 @@ async def game_watcher(self, ctx): ctx.location_names.lookup_in_slot(item.location, item.player), recv_index, len(ctx.items_received))) if self.should_show_message(ctx, item): - if item.item != 0xBC0012 and item.item not in trap_rom_data: + if item.item != 0xBC0012 and item.item != 0xBC0015 and item.item not in trap_rom_data: # Don't send messages for Boss Tokens item_name = ctx.item_names.lookup_in_game(item.item) player_name = ctx.player_names[item.player] @@ -515,7 +712,7 @@ async def game_watcher(self, ctx): self.add_message_to_queue(receive_message) snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index&0xFF, (recv_index>>8)&0xFF])) - if item.item in trap_rom_data: + if item.item in trap_rom_data or item.item == 0xBC0015: item_name = ctx.item_names.lookup_in_game(item.item) player_name = ctx.player_names[item.player] @@ -572,14 +769,6 @@ async def game_watcher(self, ctx): else: # Extra Powerup? pass - elif item.item == 0xBC0015: - # Handle Literature Trap - from .Names.LiteratureTrap import lit_trap_text_list - import random - rand_trap = random.choice(lit_trap_text_list) - - for message in rand_trap: - self.add_message_to_queue(message) await snes_flush_writes(ctx) diff --git a/worlds/smw/Items.py b/worlds/smw/Items.py index eaf58b9b8e4e..e5f5c2722373 100644 --- a/worlds/smw/Items.py +++ b/worlds/smw/Items.py @@ -75,3 +75,49 @@ class SMWItem(Item): } lookup_id_to_name: typing.Dict[int, str] = {data.code: item_name for item_name, data in item_table.items() if data.code} + + +trap_value_to_name: typing.Dict[int, str] = { + 0xBC0013: ItemName.ice_trap, + 0xBC0014: ItemName.stun_trap, + 0xBC0015: ItemName.literature_trap, + 0xBC0016: ItemName.timer_trap, + 0xBC001C: ItemName.reverse_controls_trap, + 0xBC001D: ItemName.thwimp_trap, +} + +trap_name_to_value: typing.Dict[str, int] = { + # Our native Traps + ItemName.ice_trap: 0xBC0013, + ItemName.stun_trap: 0xBC0014, + ItemName.literature_trap: 0xBC0015, + ItemName.timer_trap: 0xBC0016, + ItemName.reverse_controls_trap: 0xBC001C, + ItemName.thwimp_trap: 0xBC001D, + + # Common other trap names + "Chaos Control Trap": 0xBC0014, # Stun Trap + "Confuse Trap": 0xBC001C, # Reverse Trap + "Exposition Trap": 0xBC0015, # Literature Trap + "Cutscene Trap": 0xBC0015, # Literature Trap + "Freeze Trap": 0xBC0014, # Stun Trap + "Frozen Trap": 0xBC0014, # Stun Trap + "Paralyze Trap": 0xBC0014, # Stun Trap + "Reversal Trap": 0xBC001C, # Reverse Trap + "Fuzzy Trap": 0xBC001C, # Reverse Trap + "Confound Trap": 0xBC001C, # Reverse Trap + "Confusion Trap": 0xBC001C, # Reverse Trap + "Police Trap": 0xBC001D, # Thwimp Trap + "Buyon Trap": 0xBC001D, # Thwimp Trap + "Gooey Bag": 0xBC001D, # Thwimp Trap + "TNT Barrel Trap": 0xBC001D, # Thwimp Trap + "Honey Trap": 0xBC0014, # Stun Trap + "Screen Flip Trap": 0xBC001C, # Reverse Trap + "Banana Trap": 0xBC0013, # Ice Trap + "Bomb": 0xBC001D, # Thwimp Trap + "Bonk Trap": 0xBC0014, # Stun Trap + "Ghost": 0xBC001D, # Thwimp Trap + "Fast Trap": 0xBC0016, # Timer Trap + "Nut Trap": 0xBC001D, # Thwimp Trap + "Army Trap": 0xBC001D, # Thwimp Trap +} diff --git a/worlds/smw/Names/TextBox.py b/worlds/smw/Names/TextBox.py index 2302a5f85fc9..fef04627b6e5 100644 --- a/worlds/smw/Names/TextBox.py +++ b/worlds/smw/Names/TextBox.py @@ -117,6 +117,31 @@ def generate_received_text(item_name: str, player_name: str): return out_array +def generate_received_trap_link_text(item_name: str, player_name: str): + out_array = bytearray() + + item_name = item_name[:18] + player_name = player_name[:18] + + item_buffer = max(0, math.floor((18 - len(item_name)) / 2)) + player_buffer = max(0, math.floor((18 - len(player_name)) / 2)) + + out_array += bytearray([0x9F, 0x9F]) + out_array += string_to_bytes(" Received linked") + out_array[-1] += 0x80 + out_array += bytearray([0x1F] * item_buffer) + out_array += string_to_bytes(item_name) + out_array[-1] += 0x80 + out_array += string_to_bytes(" from") + out_array[-1] += 0x80 + out_array += bytearray([0x1F] * player_buffer) + out_array += string_to_bytes(player_name) + out_array[-1] += 0x80 + out_array += bytearray([0x9F, 0x9F]) + + return out_array + + def generate_sent_text(item_name: str, player_name: str): out_array = bytearray() diff --git a/worlds/smw/Options.py b/worlds/smw/Options.py index 545b3c931b42..1dcfb16b85e2 100644 --- a/worlds/smw/Options.py +++ b/worlds/smw/Options.py @@ -398,6 +398,20 @@ class StartingLifeCount(Range): default = 5 +class RingLink(Toggle): + """ + Whether your in-level coin gain/loss is linked to other players + """ + display_name = "Ring Link" + + +class TrapLink(Toggle): + """ + Whether your received traps are linked to other players + """ + display_name = "Trap Link" + + smw_option_groups = [ OptionGroup("Goal Options", [ Goal, @@ -447,6 +461,8 @@ class StartingLifeCount(Range): @dataclass class SMWOptions(PerGameCommonOptions): death_link: DeathLink + ring_link: RingLink + trap_link: TrapLink goal: Goal bosses_required: BossesRequired max_yoshi_egg_cap: NumberOfYoshiEggs diff --git a/worlds/smw/Rom.py b/worlds/smw/Rom.py index ff3b5c31634d..9016e14def91 100644 --- a/worlds/smw/Rom.py +++ b/worlds/smw/Rom.py @@ -719,8 +719,8 @@ def handle_vertical_scroll(rom): 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, # Levels 0D0-0DF 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, # Levels 0E0-0EF 0x02, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, # Levels 0F0-0FF - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, # Levels 100-10F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 110-11F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x01, # Levels 100-10F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, # Levels 110-11F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 120-12F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 130-13F 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, # Levels 140-14F @@ -3160,6 +3160,8 @@ def patch_rom(world: World, rom, player, active_level_dict): rom.write_byte(0x01BFA9, world.options.hidden_1up_checks.value) rom.write_byte(0x01BFAA, world.options.bonus_block_checks.value) rom.write_byte(0x01BFAB, world.options.blocksanity.value) + rom.write_byte(0x01BFB7, world.options.trap_link.value) + rom.write_byte(0x01BFB8, world.options.ring_link.value) from Utils import __version__ diff --git a/worlds/smw/__init__.py b/worlds/smw/__init__.py index 97fc84f003a0..56ca82abb25c 100644 --- a/worlds/smw/__init__.py +++ b/worlds/smw/__init__.py @@ -90,6 +90,7 @@ def fill_slot_data(self) -> dict: "blocksanity", ) slot_data["active_levels"] = self.active_level_dict + slot_data["trap_weights"] = self.output_trap_weights() return slot_data @@ -322,3 +323,15 @@ def get_filler_item_name(self) -> str: def set_rules(self): set_rules(self) + + def output_trap_weights(self) -> dict[int, int]: + trap_data = {} + + trap_data[0xBC0013] = self.options.ice_trap_weight.value + trap_data[0xBC0014] = self.options.stun_trap_weight.value + trap_data[0xBC0015] = self.options.literature_trap_weight.value + trap_data[0xBC0016] = self.options.timer_trap_weight.value + trap_data[0xBC001C] = self.options.reverse_trap_weight.value + trap_data[0xBC001D] = self.options.thwimp_trap_weight.value + + return trap_data diff --git a/worlds/smz3/data/zsm.ips b/worlds/smz3/data/zsm.ips index 87a4f924f193..54c558185045 100644 Binary files a/worlds/smz3/data/zsm.ips and b/worlds/smz3/data/zsm.ips differ diff --git a/worlds/soe/docs/multiworld_en.md b/worlds/soe/docs/multiworld_en.md index a2944d4c012b..9378626df4f6 100644 --- a/worlds/soe/docs/multiworld_en.md +++ b/worlds/soe/docs/multiworld_en.md @@ -130,9 +130,7 @@ page: [usb2snes Supported Platforms Page](http://usb2snes.com/#supported-platfor ### Open the client -Open ap-soeclient ([Evermizer Archipelago Client Page](http://evermizer.com/apclient)) in a modern browser. Do not -switch tabs, open it in a new window if you want to use the browser while playing. Do not minimize the window with the -client. +Open ap-soeclient ([Evermizer Archipelago Client Page](http://evermizer.com/apclient)) in a modern browser. The client should automatically connect to SNI, the "SNES" status should change to green. diff --git a/worlds/stardew_valley/__init__.py b/worlds/stardew_valley/__init__.py index f48c9bc1a462..ea0ce9e1232d 100644 --- a/worlds/stardew_valley/__init__.py +++ b/worlds/stardew_valley/__init__.py @@ -1,25 +1,28 @@ import logging import typing from random import Random -from typing import Dict, Any, Iterable, Optional, List, TextIO +from typing import Dict, Any, Optional, List, TextIO -from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState +import entrance_rando +from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState from Options import PerGameCommonOptions from worlds.AutoWorld import World, WebWorld from .bundles.bundle_room import BundleRoom from .bundles.bundles import get_all_bundles from .content import StardewContent, create_content from .early_items import setup_early_items -from .items import item_table, create_items, ItemData, Group, items_by_group, generate_filler_choice_pool +from .items import item_table, ItemData, Group, items_by_group +from .items.item_creation import create_items, get_all_filler_items, remove_limited_amount_packs, \ + generate_filler_choice_pool from .locations import location_table, create_locations, LocationData, locations_by_tag from .logic.logic import StardewLogic -from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, EnabledFillerBuffs, NumberOfMovementBuffs, \ - BuildingProgression, EntranceRandomization, FarmType +from .options import StardewValleyOptions, SeasonRandomization, Goal, BundleRandomization, EnabledFillerBuffs, \ + NumberOfMovementBuffs, BuildingProgression, EntranceRandomization, FarmType from .options.forced_options import force_change_options_if_incompatible from .options.option_groups import sv_option_groups from .options.presets import sv_options_presets from .options.worlds_group import apply_most_restrictive_options -from .regions import create_regions +from .regions import create_regions, prepare_mod_data from .rules import set_rules from .stardew_rule import True_, StardewRule, HasProgressionPercent from .strings.ap_names.event_names import Event @@ -122,18 +125,13 @@ def generate_early(self): self.content = create_content(self.options) def create_regions(self): - def create_region(name: str, exits: Iterable[str]) -> Region: - region = Region(name, self.player, self.multiworld) - region.exits = [Entrance(self.player, exit_name, region) for exit_name in exits] - return region + def create_region(name: str) -> Region: + return Region(name, self.player, self.multiworld) - world_regions, world_entrances, self.randomized_entrances = create_regions(create_region, self.random, self.options, self.content) + world_regions = create_regions(create_region, self.options, self.content) self.logic = StardewLogic(self.player, self.options, self.content, world_regions.keys()) - self.modified_bundles = get_all_bundles(self.random, - self.logic, - self.content, - self.options) + self.modified_bundles = get_all_bundles(self.random, self.logic, self.content, self.options) def add_location(name: str, code: Optional[int], region: str): region: Region = world_regions[region] @@ -306,6 +304,11 @@ def create_event_location(self, location_data: LocationData, rule: StardewRule, def set_rules(self): set_rules(self) + def connect_entrances(self) -> None: + no_target_groups = {0: [0]} + placement = entrance_rando.randomize_entrances(self, coupled=True, target_group_lookup=no_target_groups) + self.randomized_entrances = prepare_mod_data(placement) + def generate_basic(self): pass diff --git a/worlds/stardew_valley/content/mods/sve.py b/worlds/stardew_valley/content/mods/sve.py index 12b3e3558a67..378472373749 100644 --- a/worlds/stardew_valley/content/mods/sve.py +++ b/worlds/stardew_valley/content/mods/sve.py @@ -24,6 +24,9 @@ from ...strings.tool_names import Tool, ToolMaterial from ...strings.villager_names import ModNPC +# Used to adapt content not yet moved to content packs to easily detect when SVE and Ginger Island are both enabled. +SVE_GINGER_ISLAND_PACK = ModNames.sve + "+" + ginger_island_content_pack.name + class SVEContentPack(ContentPack): @@ -67,6 +70,10 @@ def harvest_source_hook(self, content: StardewContent): content.game_items.pop(SVESeed.slime) content.game_items.pop(SVEFruit.slime_berry) + def finalize_hook(self, content: StardewContent): + if ginger_island_content_pack.name in content.registered_packs: + content.registered_packs.add(SVE_GINGER_ISLAND_PACK) + register_mod_content_pack(SVEContentPack( ModNames.sve, @@ -80,8 +87,9 @@ def harvest_source_hook(self, content: StardewContent): ModEdible.lightning_elixir: (ShopSource(money_price=12000, shop_region=SVERegion.galmoran_outpost),), ModEdible.barbarian_elixir: (ShopSource(money_price=22000, shop_region=SVERegion.galmoran_outpost),), ModEdible.gravity_elixir: (ShopSource(money_price=4000, shop_region=SVERegion.galmoran_outpost),), - SVEMeal.grampleton_orange_chicken: ( - ShopSource(money_price=650, shop_region=Region.saloon, other_requirements=(RelationshipRequirement(ModNPC.sophia, 6),)),), + SVEMeal.grampleton_orange_chicken: (ShopSource(money_price=650, + shop_region=Region.saloon, + other_requirements=(RelationshipRequirement(ModNPC.sophia, 6),)),), ModEdible.hero_elixir: (ShopSource(money_price=8000, shop_region=SVERegion.isaac_shop),), ModEdible.aegis_elixir: (ShopSource(money_price=28000, shop_region=SVERegion.galmoran_outpost),), SVEBeverage.sports_drink: (ShopSource(money_price=750, shop_region=Region.hospital),), @@ -118,8 +126,8 @@ def harvest_source_hook(self, content: StardewContent): ModLoot.green_mushroom: (ForagingSource(regions=(SVERegion.highlands_pond,), seasons=Season.not_winter),), ModLoot.ornate_treasure_chest: (ForagingSource(regions=(SVERegion.highlands_outside,), - other_requirements=( - CombatRequirement(Performance.galaxy), ToolRequirement(Tool.axe, ToolMaterial.iron))),), + other_requirements=(CombatRequirement(Performance.galaxy), + ToolRequirement(Tool.axe, ToolMaterial.iron))),), ModLoot.swirl_stone: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.galaxy),)),), ModLoot.void_soul: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.good),)),), SVEForage.winter_star_rose: (ForagingSource(regions=(SVERegion.summit,), seasons=(Season.winter,)),), @@ -139,8 +147,9 @@ def harvest_source_hook(self, content: StardewContent): SVEForage.thistle: (ForagingSource(regions=(SVERegion.summit,)),), ModLoot.void_pebble: (ForagingSource(regions=(SVERegion.crimson_badlands,), other_requirements=(CombatRequirement(Performance.great),)),), ModLoot.void_shard: (ForagingSource(regions=(SVERegion.crimson_badlands,), - other_requirements=( - CombatRequirement(Performance.galaxy), SkillRequirement(Skill.combat, 10), YearRequirement(3),)),), + other_requirements=(CombatRequirement(Performance.galaxy), + SkillRequirement(Skill.combat, 10), + YearRequirement(3),)),), SVEWaterItem.dulse_seaweed: (ForagingSource(regions=(Region.beach,), other_requirements=(FishingRequirement(Region.beach),)),), # Fable Reef @@ -207,7 +216,6 @@ def harvest_source_hook(self, content: StardewContent): villagers_data.scarlett, villagers_data.susan, villagers_data.morris, - # The wizard leaves his tower on sunday, for like 1 hour... Good enough for entrance rando! - override(villagers_data.wizard, locations=(Region.wizard_tower, Region.forest), bachelor=True, mod_name=ModNames.sve), + override(villagers_data.wizard, bachelor=True, mod_name=ModNames.sve), ) )) diff --git a/worlds/stardew_valley/content/vanilla/pelican_town.py b/worlds/stardew_valley/content/vanilla/pelican_town.py index aeae4c14316a..d1d024b54c55 100644 --- a/worlds/stardew_valley/content/vanilla/pelican_town.py +++ b/worlds/stardew_valley/content/vanilla/pelican_town.py @@ -3,7 +3,7 @@ from ...data.building import Building from ...data.game_item import GenericSource, ItemTag, Tag, CustomRuleSource from ...data.harvest import ForagingSource, SeasonalForagingSource, ArtifactSpotSource -from ...data.requirement import ToolRequirement, BookRequirement, SkillRequirement +from ...data.requirement import ToolRequirement, BookRequirement, SkillRequirement, YearRequirement from ...data.shop import ShopSource, MysteryBoxSource, ArtifactTroveSource, PrizeMachineSource, FishingTreasureChestSource from ...strings.artisan_good_names import ArtisanGood from ...strings.book_names import Book @@ -209,7 +209,7 @@ # Books Book.animal_catalogue: ( Tag(ItemTag.BOOK, ItemTag.BOOK_POWER), - ShopSource(money_price=5000, shop_region=Region.ranch),), + ShopSource(money_price=5000, shop_region=Region.ranch, other_requirements=(YearRequirement(2),)),), Book.book_of_mysteries: ( Tag(ItemTag.BOOK, ItemTag.BOOK_POWER), MysteryBoxSource(amount=38),), # After 38 boxes, there are 49.99% chances player received the book. diff --git a/worlds/stardew_valley/data/bundle_data.py b/worlds/stardew_valley/data/bundle_data.py index 3a5523ecdd3f..3f289d33cd1a 100644 --- a/worlds/stardew_valley/data/bundle_data.py +++ b/worlds/stardew_valley/data/bundle_data.py @@ -271,11 +271,11 @@ void_essence = BundleItem(Loot.void_essence) petrified_slime = BundleItem(Mineral.petrified_slime) -blue_slime_egg = BundleItem(Loot.blue_slime_egg) -red_slime_egg = BundleItem(Loot.red_slime_egg) -purple_slime_egg = BundleItem(Loot.purple_slime_egg) -green_slime_egg = BundleItem(Loot.green_slime_egg) -tiger_slime_egg = BundleItem(Loot.tiger_slime_egg, source=BundleItem.Sources.island) +blue_slime_egg = BundleItem(AnimalProduct.slime_egg_blue) +red_slime_egg = BundleItem(AnimalProduct.slime_egg_red) +purple_slime_egg = BundleItem(AnimalProduct.slime_egg_purple) +green_slime_egg = BundleItem(AnimalProduct.slime_egg_green) +tiger_slime_egg = BundleItem(AnimalProduct.slime_egg_tiger, source=BundleItem.Sources.island) cherry_bomb = BundleItem(Bomb.cherry_bomb, 5) bomb = BundleItem(Bomb.bomb, 2) diff --git a/worlds/stardew_valley/data/craftable_data.py b/worlds/stardew_valley/data/craftable_data.py index de371b7c3a9b..3dae67c2602c 100644 --- a/worlds/stardew_valley/data/craftable_data.py +++ b/worlds/stardew_valley/data/craftable_data.py @@ -305,7 +305,7 @@ def create_recipe(name: str, ingredients: Dict[str, int], source: RecipeSource, cookout_kit = skill_recipe(Craftable.cookout_kit, Skill.foraging, 3, {Material.wood: 15, Material.fiber: 10, Material.coal: 3}) tent_kit = skill_recipe(Craftable.tent_kit, Skill.foraging, 8, {Material.hardwood: 10, Material.fiber: 25, ArtisanGood.cloth: 1}) -statue_of_blessings = mastery_recipe(Statue.blessings, Skill.farming, {Material.sap: 999, Material.fiber: 999, Material.stone: 999}) +statue_of_blessings = mastery_recipe(Statue.blessings, Skill.farming, {Material.sap: 999, Material.fiber: 999, Material.stone: 999, Material.moss: 333}) statue_of_dwarf_king = mastery_recipe(Statue.dwarf_king, Skill.mining, {MetalBar.iridium: 20}) heavy_furnace = mastery_recipe(Machine.heavy_furnace, Skill.mining, {Machine.furnace: 2, MetalBar.iron: 3, Material.stone: 50}) mystic_tree_seed = mastery_recipe(TreeSeed.mystic, Skill.foraging, {TreeSeed.acorn: 5, TreeSeed.maple: 5, TreeSeed.pine: 5, TreeSeed.mahogany: 5}) @@ -386,7 +386,7 @@ def create_recipe(name: str, ingredients: Dict[str, int], source: RecipeSource, Forageable.salmonberry: 1, Material.clay: 1, Trash.joja_cola: 1}, ModNames.luck_skill) gold_slot_machine = skill_recipe(ModMachine.gold_slot_machine, ModSkill.luck, 4, {MetalBar.gold: 15, ModMachine.copper_slot_machine: 1}, ModNames.luck_skill) -iridium_slot_machine = skill_recipe(ModMachine.iridium_slot_machine, ModSkill.luck, 4, {MetalBar.iridium: 15, ModMachine.gold_slot_machine: 1}, ModNames.luck_skill) -radioactive_slot_machine = skill_recipe(ModMachine.radioactive_slot_machine, ModSkill.luck, 4, {MetalBar.radioactive: 15, ModMachine.iridium_slot_machine: 1}, ModNames.luck_skill) +iridium_slot_machine = skill_recipe(ModMachine.iridium_slot_machine, ModSkill.luck, 6, {MetalBar.iridium: 15, ModMachine.gold_slot_machine: 1}, ModNames.luck_skill) +radioactive_slot_machine = skill_recipe(ModMachine.radioactive_slot_machine, ModSkill.luck, 8, {MetalBar.radioactive: 15, ModMachine.iridium_slot_machine: 1}, ModNames.luck_skill) all_crafting_recipes_by_name = {recipe.item: recipe for recipe in all_crafting_recipes} diff --git a/worlds/stardew_valley/data/items.csv b/worlds/stardew_valley/data/items.csv index 11a22e952d07..f7dac9c5794e 100644 --- a/worlds/stardew_valley/data/items.csv +++ b/worlds/stardew_valley/data/items.csv @@ -6,7 +6,7 @@ id,name,classification,groups,mod_name 18,Greenhouse,progression,COMMUNITY_REWARD, 19,Glittering Boulder Removed,progression,COMMUNITY_REWARD, 20,Minecarts Repair,useful,COMMUNITY_REWARD, -21,Bus Repair,progression,COMMUNITY_REWARD, +21,Bus Repair,progression,"COMMUNITY_REWARD,DESERT_TRANSPORTATION", 22,Progressive Movie Theater,"progression,trap",COMMUNITY_REWARD, 23,Stardrop,progression,, 24,Progressive Backpack,progression,, @@ -63,8 +63,8 @@ id,name,classification,groups,mod_name 77,Combat Level,progression,SKILL_LEVEL_UP, 78,Earth Obelisk,progression,WIZARD_BUILDING, 79,Water Obelisk,progression,WIZARD_BUILDING, -80,Desert Obelisk,progression,WIZARD_BUILDING, -81,Island Obelisk,progression,"WIZARD_BUILDING,GINGER_ISLAND", +80,Desert Obelisk,progression,"WIZARD_BUILDING,DESERT_TRANSPORTATION", +81,Island Obelisk,progression,"WIZARD_BUILDING,GINGER_ISLAND,ISLAND_TRANSPORTATION", 82,Junimo Hut,useful,WIZARD_BUILDING, 83,Gold Clock,progression,WIZARD_BUILDING, 84,Progressive Coop,progression,BUILDING, @@ -242,7 +242,7 @@ id,name,classification,groups,mod_name 257,Peach Sapling,progression,"RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", 258,Banana Sapling,progression,"GINGER_ISLAND,RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", 259,Mango Sapling,progression,"GINGER_ISLAND,RESOURCE_PACK,RESOURCE_PACK_USEFUL,CROPSANITY", -260,Boat Repair,progression,GINGER_ISLAND, +260,Boat Repair,progression,"GINGER_ISLAND,ISLAND_TRANSPORTATION", 261,Open Professor Snail Cave,progression,GINGER_ISLAND, 262,Island North Turtle,progression,"GINGER_ISLAND,WALNUT_PURCHASE", 263,Island West Turtle,progression,"GINGER_ISLAND,WALNUT_PURCHASE", diff --git a/worlds/stardew_valley/data/locations.csv b/worlds/stardew_valley/data/locations.csv index 66a9157b3437..2829a1252240 100644 --- a/worlds/stardew_valley/data/locations.csv +++ b/worlds/stardew_valley/data/locations.csv @@ -1129,8 +1129,8 @@ id,region,name,tags,mod_name 2204,Leo's Hut,Leo's Parrot,"GINGER_ISLAND,WALNUT_PURCHASE", 2205,Island South,Island West Turtle,"GINGER_ISLAND,WALNUT_PURCHASE", 2206,Island West,Island Farmhouse,"GINGER_ISLAND,WALNUT_PURCHASE", -2207,Island Farmhouse,Island Mailbox,"GINGER_ISLAND,WALNUT_PURCHASE", -2208,Island Farmhouse,Farm Obelisk,"GINGER_ISLAND,WALNUT_PURCHASE", +2207,Island West,Island Mailbox,"GINGER_ISLAND,WALNUT_PURCHASE", +2208,Island West,Farm Obelisk,"GINGER_ISLAND,WALNUT_PURCHASE", 2209,Island North,Dig Site Bridge,"GINGER_ISLAND,WALNUT_PURCHASE", 2210,Island North,Island Trader,"GINGER_ISLAND,WALNUT_PURCHASE", 2211,Volcano Entrance,Volcano Bridge,"GINGER_ISLAND,WALNUT_PURCHASE", diff --git a/worlds/stardew_valley/items/__init__.py b/worlds/stardew_valley/items/__init__.py new file mode 100644 index 000000000000..ddf5e69f68be --- /dev/null +++ b/worlds/stardew_valley/items/__init__.py @@ -0,0 +1 @@ +from .item_data import item_table, ItemData, Group, items_by_group, load_item_csv diff --git a/worlds/stardew_valley/items.py b/worlds/stardew_valley/items/item_creation.py similarity index 86% rename from worlds/stardew_valley/items.py rename to worlds/stardew_valley/items/item_creation.py index a0f901a20937..6928ca8b66cb 100644 --- a/worlds/stardew_valley/items.py +++ b/worlds/stardew_valley/items/item_creation.py @@ -1,165 +1,26 @@ -import csv -import enum import logging -from dataclasses import dataclass, field -from functools import reduce -from pathlib import Path from random import Random -from typing import Dict, List, Protocol, Union, Set, Optional +from typing import List, Set from BaseClasses import Item, ItemClassification -from . import data -from .content.feature import friendsanity -from .content.game_content import StardewContent -from .data.game_item import ItemTag -from .logic.logic_event import all_events -from .mods.mod_data import ModNames -from .options import StardewValleyOptions, TrapItems, FestivalLocations, ExcludeGingerIsland, SpecialOrderLocations, SeasonRandomization, Museumsanity, \ +from .item_data import StardewItemFactory, items_by_group, Group, item_table, ItemData +from ..content.feature import friendsanity +from ..content.game_content import StardewContent +from ..data.game_item import ItemTag +from ..mods.mod_data import ModNames +from ..options import StardewValleyOptions, FestivalLocations, ExcludeGingerIsland, SpecialOrderLocations, SeasonRandomization, Museumsanity, \ ElevatorProgression, BackpackProgression, ArcadeMachineLocations, Monstersanity, Goal, \ - Chefsanity, Craftsanity, BundleRandomization, EntranceRandomization, Shipsanity, Walnutsanity, EnabledFillerBuffs -from .strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName -from .strings.ap_names.ap_weapon_names import APWeapon -from .strings.ap_names.buff_names import Buff -from .strings.ap_names.community_upgrade_names import CommunityUpgrade -from .strings.ap_names.mods.mod_items import SVEQuestItem -from .strings.currency_names import Currency -from .strings.tool_names import Tool -from .strings.wallet_item_names import Wallet - -ITEM_CODE_OFFSET = 717000 + Chefsanity, Craftsanity, BundleRandomization, EntranceRandomization, Shipsanity, Walnutsanity, EnabledFillerBuffs, TrapDifficulty +from ..strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName +from ..strings.ap_names.ap_weapon_names import APWeapon +from ..strings.ap_names.buff_names import Buff +from ..strings.ap_names.community_upgrade_names import CommunityUpgrade +from ..strings.ap_names.mods.mod_items import SVEQuestItem +from ..strings.currency_names import Currency +from ..strings.tool_names import Tool +from ..strings.wallet_item_names import Wallet logger = logging.getLogger(__name__) -world_folder = Path(__file__).parent - - -class Group(enum.Enum): - RESOURCE_PACK = enum.auto() - FRIENDSHIP_PACK = enum.auto() - COMMUNITY_REWARD = enum.auto() - TRASH = enum.auto() - FOOTWEAR = enum.auto() - HATS = enum.auto() - RING = enum.auto() - WEAPON = enum.auto() - WEAPON_GENERIC = enum.auto() - WEAPON_SWORD = enum.auto() - WEAPON_CLUB = enum.auto() - WEAPON_DAGGER = enum.auto() - WEAPON_SLINGSHOT = enum.auto() - PROGRESSIVE_TOOLS = enum.auto() - SKILL_LEVEL_UP = enum.auto() - SKILL_MASTERY = enum.auto() - BUILDING = enum.auto() - WIZARD_BUILDING = enum.auto() - ARCADE_MACHINE_BUFFS = enum.auto() - BASE_RESOURCE = enum.auto() - WARP_TOTEM = enum.auto() - GEODE = enum.auto() - ORE = enum.auto() - FERTILIZER = enum.auto() - SEED = enum.auto() - CROPSANITY = enum.auto() - FISHING_RESOURCE = enum.auto() - SEASON = enum.auto() - TRAVELING_MERCHANT_DAY = enum.auto() - MUSEUM = enum.auto() - FRIENDSANITY = enum.auto() - FESTIVAL = enum.auto() - RARECROW = enum.auto() - TRAP = enum.auto() - BONUS = enum.auto() - MAXIMUM_ONE = enum.auto() - AT_LEAST_TWO = enum.auto() - DEPRECATED = enum.auto() - RESOURCE_PACK_USEFUL = enum.auto() - SPECIAL_ORDER_BOARD = enum.auto() - SPECIAL_ORDER_QI = enum.auto() - BABY = enum.auto() - GINGER_ISLAND = enum.auto() - WALNUT_PURCHASE = enum.auto() - TV_CHANNEL = enum.auto() - QI_CRAFTING_RECIPE = enum.auto() - CHEFSANITY = enum.auto() - CHEFSANITY_STARTER = enum.auto() - CHEFSANITY_QOS = enum.auto() - CHEFSANITY_PURCHASE = enum.auto() - CHEFSANITY_FRIENDSHIP = enum.auto() - CHEFSANITY_SKILL = enum.auto() - CRAFTSANITY = enum.auto() - BOOK_POWER = enum.auto() - LOST_BOOK = enum.auto() - PLAYER_BUFF = enum.auto() - # Mods - MAGIC_SPELL = enum.auto() - MOD_WARP = enum.auto() - - -@dataclass(frozen=True) -class ItemData: - code_without_offset: Optional[int] - name: str - classification: ItemClassification - mod_name: Optional[str] = None - groups: Set[Group] = field(default_factory=frozenset) - - def __post_init__(self): - if not isinstance(self.groups, frozenset): - super().__setattr__("groups", frozenset(self.groups)) - - @property - def code(self): - return ITEM_CODE_OFFSET + self.code_without_offset if self.code_without_offset is not None else None - - def has_any_group(self, *group: Group) -> bool: - groups = set(group) - return bool(groups.intersection(self.groups)) - - -class StardewItemFactory(Protocol): - def __call__(self, name: Union[str, ItemData], override_classification: ItemClassification = None) -> Item: - raise NotImplementedError - - -def load_item_csv(): - from importlib.resources import files - - items = [] - with files(data).joinpath("items.csv").open() as file: - item_reader = csv.DictReader(file) - for item in item_reader: - id = int(item["id"]) if item["id"] else None - classification = reduce((lambda a, b: a | b), {ItemClassification[str_classification] for str_classification in item["classification"].split(",")}) - groups = {Group[group] for group in item["groups"].split(",") if group} - mod_name = str(item["mod_name"]) if item["mod_name"] else None - items.append(ItemData(id, item["name"], classification, mod_name, groups)) - return items - - -events = [ - ItemData(None, e, ItemClassification.progression) - for e in sorted(all_events) -] - -all_items: List[ItemData] = load_item_csv() + events -item_table: Dict[str, ItemData] = {} -items_by_group: Dict[Group, List[ItemData]] = {} - - -def initialize_groups(): - for item in all_items: - for group in item.groups: - item_group = items_by_group.get(group, list()) - item_group.append(item) - items_by_group[group] = item_group - - -def initialize_item_table(): - item_table.update({item.name: item for item in all_items}) - - -initialize_item_table() -initialize_groups() - def get_too_many_items_error_message(locations_count: int, items_count: int) -> str: return f"There should be at least as many locations [{locations_count}] as there are mandatory items [{items_count}]" @@ -712,13 +573,15 @@ def weapons_count(options: StardewValleyOptions): def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options: StardewValleyOptions, random: Random, items_already_added: List[Item], available_item_slots: int) -> List[Item]: - include_traps = options.trap_items != TrapItems.option_no_traps + include_traps = options.trap_difficulty != TrapDifficulty.option_no_traps items_already_added_names = [item.name for item in items_already_added] useful_resource_packs = [pack for pack in items_by_group[Group.RESOURCE_PACK_USEFUL] if pack.name not in items_already_added_names] trap_items = [trap for trap in items_by_group[Group.TRAP] if trap.name not in items_already_added_names and - (trap.mod_name is None or trap.mod_name in options.mods)] + Group.DEPRECATED not in trap.groups and + (trap.mod_name is None or trap.mod_name in options.mods) and + options.trap_distribution[trap.name] > 0] player_buffs = get_allowed_player_buffs(options.enabled_filler_buffs) priority_filler_items = [] @@ -750,11 +613,13 @@ def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options (filler_pack.name not in [priority_item.name for priority_item in priority_filler_items] and filler_pack.name not in items_already_added_names)] + filler_weights = get_filler_weights(options, all_filler_packs) + while available_item_slots > 0: - resource_pack = random.choice(all_filler_packs) + resource_pack = random.choices(all_filler_packs, weights=filler_weights, k=1)[0] exactly_2 = Group.AT_LEAST_TWO in resource_pack.groups while exactly_2 and available_item_slots == 1: - resource_pack = random.choice(all_filler_packs) + resource_pack = random.choices(all_filler_packs, weights=filler_weights, k=1)[0] exactly_2 = Group.AT_LEAST_TWO in resource_pack.groups classification = ItemClassification.useful if resource_pack.classification == ItemClassification.progression else resource_pack.classification items.append(item_factory(resource_pack, classification)) @@ -763,11 +628,24 @@ def fill_with_resource_packs_and_traps(item_factory: StardewItemFactory, options items.append(item_factory(resource_pack, classification)) available_item_slots -= 1 if exactly_2 or Group.MAXIMUM_ONE in resource_pack.groups: - all_filler_packs.remove(resource_pack) + index = all_filler_packs.index(resource_pack) + all_filler_packs.pop(index) + filler_weights.pop(index) return items +def get_filler_weights(options: StardewValleyOptions, all_filler_packs: List[ItemData]): + weights = [] + for filler in all_filler_packs: + if filler.name in options.trap_distribution: + num = options.trap_distribution[filler.name] + else: + num = options.trap_distribution.default_weight + weights.append(num) + return weights + + def filter_deprecated_items(items: List[ItemData]) -> List[ItemData]: return [item for item in items if Group.DEPRECATED not in item.groups] @@ -792,7 +670,7 @@ def remove_excluded_items_island_mods(items, exclude_ginger_island: bool, mods: def generate_filler_choice_pool(options: StardewValleyOptions) -> list[str]: - include_traps = options.trap_items != TrapItems.option_no_traps + include_traps = options.trap_difficulty != TrapDifficulty.option_no_traps exclude_island = options.exclude_ginger_island == ExcludeGingerIsland.option_true available_filler = get_all_filler_items(include_traps, exclude_island) diff --git a/worlds/stardew_valley/items/item_data.py b/worlds/stardew_valley/items/item_data.py new file mode 100644 index 000000000000..6abc96f4e626 --- /dev/null +++ b/worlds/stardew_valley/items/item_data.py @@ -0,0 +1,145 @@ +import csv +import enum +from dataclasses import dataclass, field +from functools import reduce +from pathlib import Path +from typing import Dict, List, Protocol, Union, Set, Optional + +from BaseClasses import Item, ItemClassification +from .. import data +from ..logic.logic_event import all_events + +ITEM_CODE_OFFSET = 717000 + +world_folder = Path(__file__).parent + + +class Group(enum.Enum): + RESOURCE_PACK = enum.auto() + FRIENDSHIP_PACK = enum.auto() + COMMUNITY_REWARD = enum.auto() + TRASH = enum.auto() + FOOTWEAR = enum.auto() + HATS = enum.auto() + RING = enum.auto() + WEAPON = enum.auto() + WEAPON_GENERIC = enum.auto() + WEAPON_SWORD = enum.auto() + WEAPON_CLUB = enum.auto() + WEAPON_DAGGER = enum.auto() + WEAPON_SLINGSHOT = enum.auto() + PROGRESSIVE_TOOLS = enum.auto() + SKILL_LEVEL_UP = enum.auto() + SKILL_MASTERY = enum.auto() + BUILDING = enum.auto() + WIZARD_BUILDING = enum.auto() + DESERT_TRANSPORTATION = enum.auto() + ISLAND_TRANSPORTATION = enum.auto() + ARCADE_MACHINE_BUFFS = enum.auto() + BASE_RESOURCE = enum.auto() + WARP_TOTEM = enum.auto() + GEODE = enum.auto() + ORE = enum.auto() + FERTILIZER = enum.auto() + SEED = enum.auto() + CROPSANITY = enum.auto() + FISHING_RESOURCE = enum.auto() + SEASON = enum.auto() + TRAVELING_MERCHANT_DAY = enum.auto() + MUSEUM = enum.auto() + FRIENDSANITY = enum.auto() + FESTIVAL = enum.auto() + RARECROW = enum.auto() + TRAP = enum.auto() + BONUS = enum.auto() + MAXIMUM_ONE = enum.auto() + AT_LEAST_TWO = enum.auto() + DEPRECATED = enum.auto() + RESOURCE_PACK_USEFUL = enum.auto() + SPECIAL_ORDER_BOARD = enum.auto() + SPECIAL_ORDER_QI = enum.auto() + BABY = enum.auto() + GINGER_ISLAND = enum.auto() + WALNUT_PURCHASE = enum.auto() + TV_CHANNEL = enum.auto() + QI_CRAFTING_RECIPE = enum.auto() + CHEFSANITY = enum.auto() + CHEFSANITY_STARTER = enum.auto() + CHEFSANITY_QOS = enum.auto() + CHEFSANITY_PURCHASE = enum.auto() + CHEFSANITY_FRIENDSHIP = enum.auto() + CHEFSANITY_SKILL = enum.auto() + CRAFTSANITY = enum.auto() + BOOK_POWER = enum.auto() + LOST_BOOK = enum.auto() + PLAYER_BUFF = enum.auto() + # Mods + MAGIC_SPELL = enum.auto() + MOD_WARP = enum.auto() + + +@dataclass(frozen=True) +class ItemData: + code_without_offset: Optional[int] + name: str + classification: ItemClassification + mod_name: Optional[str] = None + groups: Set[Group] = field(default_factory=frozenset) + + def __post_init__(self): + if not isinstance(self.groups, frozenset): + super().__setattr__("groups", frozenset(self.groups)) + + @property + def code(self): + return ITEM_CODE_OFFSET + self.code_without_offset if self.code_without_offset is not None else None + + def has_any_group(self, *group: Group) -> bool: + groups = set(group) + return bool(groups.intersection(self.groups)) + + +class StardewItemFactory(Protocol): + def __call__(self, name: Union[str, ItemData], override_classification: ItemClassification = None) -> Item: + raise NotImplementedError + + +def load_item_csv(): + from importlib.resources import files + + items = [] + with files(data).joinpath("items.csv").open() as file: + item_reader = csv.DictReader(file) + for item in item_reader: + id = int(item["id"]) if item["id"] else None + classification = reduce((lambda a, b: a | b), {ItemClassification[str_classification] for str_classification in item["classification"].split(",")}) + groups = {Group[group] for group in item["groups"].split(",") if group} + mod_name = str(item["mod_name"]) if item["mod_name"] else None + items.append(ItemData(id, item["name"], classification, mod_name, groups)) + return items + + +events = [ + ItemData(None, e, ItemClassification.progression) + for e in sorted(all_events) +] + +all_items: List[ItemData] = load_item_csv() + events +item_table: Dict[str, ItemData] = {} +items_by_group: Dict[Group, List[ItemData]] = {} + + +def initialize_groups(): + for item in all_items: + for group in item.groups: + item_group = items_by_group.get(group, list()) + item_group.append(item) + items_by_group[group] = item_group + + +def initialize_item_table(): + item_table.update({item.name: item for item in all_items}) + + +initialize_item_table() +initialize_groups() diff --git a/worlds/stardew_valley/locations.py b/worlds/stardew_valley/locations.py index 0d621fda49ee..fa4d50ce792a 100644 --- a/worlds/stardew_valley/locations.py +++ b/worlds/stardew_valley/locations.py @@ -279,6 +279,9 @@ def extend_festival_locations(randomized_locations: List[LocationData], options: return festival_locations = locations_by_tag[LocationTags.FESTIVAL] + if not options.museumsanity: + festival_locations = [location for location in festival_locations if location.name not in ("Rarecrow #7 (Tanuki)", "Rarecrow #8 (Tribal Mask)")] + randomized_locations.extend(festival_locations) extend_hard_festival_locations(randomized_locations, options) extend_desert_festival_chef_locations(randomized_locations, options, random) diff --git a/worlds/stardew_valley/logic/festival_logic.py b/worlds/stardew_valley/logic/festival_logic.py index b48668964d71..72efffe83a2c 100644 --- a/worlds/stardew_valley/logic/festival_logic.py +++ b/worlds/stardew_valley/logic/festival_logic.py @@ -154,7 +154,7 @@ def can_succeed_grange_display(self) -> StardewRule: # Salads at the bar are good enough cooking_rule = self.logic.money.can_spend_at(Region.saloon, 220) - fish_rule = self.logic.skill.can_fish(difficulty=50) + fish_rule = self.logic.fishing.can_fish_anywhere(50) # Hazelnut always available since the grange display is in fall forage_rule = self.logic.region.can_reach_any((Region.forest, Region.backwoods)) @@ -179,7 +179,7 @@ def can_succeed_grange_display(self) -> StardewRule: return animal_rule & artisan_rule & cooking_rule & fish_rule & forage_rule & fruit_rule & mineral_rule & vegetable_rule def can_win_fishing_competition(self) -> StardewRule: - return self.logic.skill.can_fish(difficulty=60) + return self.logic.fishing.can_fish(60) def has_all_rarecrows(self) -> StardewRule: rules = [] diff --git a/worlds/stardew_valley/logic/fishing_logic.py b/worlds/stardew_valley/logic/fishing_logic.py index 85a9b1204076..544f322057e9 100644 --- a/worlds/stardew_valley/logic/fishing_logic.py +++ b/worlds/stardew_valley/logic/fishing_logic.py @@ -1,3 +1,5 @@ +from functools import cached_property + from Utils import cache_self1 from .base_logic import BaseLogicMixin, BaseLogic from ..data import fish_data @@ -12,6 +14,8 @@ from ..strings.region_names import Region from ..strings.skill_names import Skill +fishing_regions = (Region.beach, Region.town, Region.forest, Region.mountain, Region.island_south, Region.island_west) + class FishingLogicMixin(BaseLogicMixin): def __init__(self, *args, **kwargs): @@ -20,17 +24,35 @@ def __init__(self, *args, **kwargs): class FishingLogic(BaseLogic): + @cache_self1 + def can_fish_anywhere(self, difficulty: int = 0) -> StardewRule: + return self.logic.fishing.can_fish(difficulty) & self.logic.region.can_reach_any(fishing_regions) + def can_fish_in_freshwater(self) -> StardewRule: - return self.logic.skill.can_fish() & self.logic.region.can_reach_any((Region.forest, Region.town, Region.mountain)) + return self.logic.fishing.can_fish() & self.logic.region.can_reach_any((Region.forest, Region.town, Region.mountain)) + @cached_property def has_max_fishing(self) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.skill.has_level(Skill.fishing, 10) + @cached_property def can_fish_chests(self) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.skill.has_level(Skill.fishing, 6) + @cache_self1 def can_fish_at(self, region: str) -> StardewRule: - return self.logic.skill.can_fish() & self.logic.region.can_reach(region) + return self.logic.fishing.can_fish() & self.logic.region.can_reach(region) + + @cache_self1 + def can_fish(self, difficulty: int = 0) -> StardewRule: + skill_required = min(10, max(0, int((difficulty / 10) - 1))) + if difficulty <= 40: + skill_required = 0 + + skill_rule = self.logic.skill.has_level(Skill.fishing, skill_required) + # Training rod only works with fish < 50. Fiberglass does not help you to catch higher difficulty fish, so it's skipped in logic. + number_fishing_rod_required = 1 if difficulty < 50 else (2 if difficulty < 80 else 4) + return self.logic.tool.has_fishing_rod(number_fishing_rod_required) & skill_rule @cache_self1 def can_catch_fish(self, fish: FishItem) -> StardewRule: @@ -39,14 +61,17 @@ def can_catch_fish(self, fish: FishItem) -> StardewRule: quest_rule = self.logic.fishing.can_start_extended_family_quest() region_rule = self.logic.region.can_reach_any(fish.locations) season_rule = self.logic.season.has_any(fish.seasons) + if fish.difficulty == -1: - difficulty_rule = self.logic.skill.can_crab_pot + difficulty_rule = self.logic.fishing.can_crab_pot else: - difficulty_rule = self.logic.skill.can_fish(difficulty=(120 if fish.legendary else fish.difficulty)) + difficulty_rule = self.logic.fishing.can_fish(120 if fish.legendary else fish.difficulty) + if fish.name == SVEFish.kittyfish: item_rule = self.logic.received(SVEQuestItem.kittyfish_spell) else: item_rule = True_() + return quest_rule & region_rule & season_rule & difficulty_rule & item_rule def can_catch_fish_for_fishsanity(self, fish: FishItem) -> StardewRule: @@ -78,7 +103,7 @@ def can_use_tackle(self, tackle: str) -> StardewRule: return self.logic.tool.has_fishing_rod(4) & self.logic.has(tackle) def can_catch_every_fish(self) -> StardewRule: - rules = [self.has_max_fishing()] + rules = [self.has_max_fishing] rules.extend( self.logic.fishing.can_catch_fish(fish) @@ -89,3 +114,15 @@ def can_catch_every_fish(self) -> StardewRule: def has_specific_bait(self, fish: FishItem) -> StardewRule: return self.can_catch_fish(fish) & self.logic.has(Machine.bait_maker) + + @cached_property + def can_crab_pot_anywhere(self) -> StardewRule: + return self.logic.fishing.can_crab_pot & self.logic.region.can_reach_any(fishing_regions) + + @cache_self1 + def can_crab_pot_at(self, region: str) -> StardewRule: + return self.logic.fishing.can_crab_pot & self.logic.region.can_reach(region) + + @cached_property + def can_crab_pot(self) -> StardewRule: + return self.logic.has(Machine.crab_pot) & self.logic.has(Fishing.bait) diff --git a/worlds/stardew_valley/logic/goal_logic.py b/worlds/stardew_valley/logic/goal_logic.py index 6dbb5f898765..7995ea2e0ddc 100644 --- a/worlds/stardew_valley/logic/goal_logic.py +++ b/worlds/stardew_valley/logic/goal_logic.py @@ -60,7 +60,7 @@ def can_complete_master_angler(self) -> StardewRule: if not self.content.features.fishsanity.is_enabled: return self.logic.fishing.can_catch_every_fish() - rules = [self.logic.fishing.has_max_fishing()] + rules = [self.logic.fishing.has_max_fishing] rules.extend( self.logic.fishing.can_catch_fish_for_fishsanity(fish) diff --git a/worlds/stardew_valley/logic/logic.py b/worlds/stardew_valley/logic/logic.py index 3848e393d2ce..42bfb9cc2604 100644 --- a/worlds/stardew_valley/logic/logic.py +++ b/worlds/stardew_valley/logic/logic.py @@ -130,9 +130,9 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC # @formatter:off self.registry.item_rules.update({ "Energy Tonic": self.money.can_spend_at(Region.hospital, 1000), - WaterChest.fishing_chest: self.fishing.can_fish_chests(), - WaterChest.golden_fishing_chest: self.fishing.can_fish_chests() & self.skill.has_mastery(Skill.fishing), - WaterChest.treasure: self.fishing.can_fish_chests(), + WaterChest.fishing_chest: self.fishing.can_fish_chests, + WaterChest.golden_fishing_chest: self.fishing.can_fish_chests & self.skill.has_mastery(Skill.fishing), + WaterChest.treasure: self.fishing.can_fish_chests, Ring.hot_java_ring: self.region.can_reach(Region.volcano_floor_10), "Galaxy Soul": self.money.can_trade_at(Region.qi_walnut_room, Currency.qi_gem, 40), "JotPK Big Buff": self.arcade.has_jotpk_power_level(7), @@ -164,19 +164,20 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC AnimalProduct.large_milk: self.animal.has_happy_animal(Animal.cow), AnimalProduct.milk: self.animal.has_animal(Animal.cow), AnimalProduct.rabbit_foot: self.animal.has_happy_animal(Animal.rabbit), - AnimalProduct.roe: self.skill.can_fish() & self.building.has_building(Building.fish_pond), + AnimalProduct.roe: self.fishing.can_fish_anywhere() & self.building.has_building(Building.fish_pond), AnimalProduct.squid_ink: self.mine.can_mine_in_the_mines_floor_81_120() | (self.building.has_building(Building.fish_pond) & self.has(Fish.squid)), AnimalProduct.sturgeon_roe: self.has(Fish.sturgeon) & self.building.has_building(Building.fish_pond), AnimalProduct.truffle: self.animal.has_animal(Animal.pig) & self.season.has_any_not_winter(), - AnimalProduct.void_egg: self.has(AnimalProduct.void_egg_starter), # Should also check void chicken if there was an alternative to obtain it without void egg + AnimalProduct.void_egg: self.has(AnimalProduct.void_egg_starter), # Should also check void chicken if there was an alternative to obtain it without void egg AnimalProduct.wool: self.animal.has_animal(Animal.rabbit) | self.animal.has_animal(Animal.sheep), AnimalProduct.slime_egg_green: self.has(Machine.slime_egg_press) & self.has(Loot.slime), AnimalProduct.slime_egg_blue: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(3), AnimalProduct.slime_egg_red: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(6), AnimalProduct.slime_egg_purple: self.has(Machine.slime_egg_press) & self.has(Loot.slime) & self.time.has_lived_months(9), - AnimalProduct.slime_egg_tiger: self.has(Fish.lionfish) & self.building.has_building(Building.fish_pond), - AnimalProduct.duck_egg_starter: self.logic.false_, # It could be purchased at the Feast of the Winter Star, but it's random every year, so not considering it yet... - AnimalProduct.dinosaur_egg_starter: self.logic.false_, # Dinosaur eggs are also part of the museum rules, and I don't want to touch them yet. + AnimalProduct.slime_egg_tiger: self.can_fish_pond(Fish.lionfish, *(Forageable.ginger, Fruit.pineapple, Fruit.mango)) & self.time.has_lived_months(12) & + self.building.has_building(Building.slime_hutch) & self.monster.can_kill(Monster.tiger_slime), + AnimalProduct.duck_egg_starter: self.logic.false_, # It could be purchased at the Feast of the Winter Star, but it's random every year, so not considering it yet... + AnimalProduct.dinosaur_egg_starter: self.logic.false_, # Dinosaur eggs are also part of the museum rules, and I don't want to touch them yet. AnimalProduct.egg_starter: self.logic.false_, # It could be purchased at the Desert Festival, but festival logic is quite a mess, so not considering it yet... AnimalProduct.golden_egg_starter: self.received(AnimalProduct.golden_egg) & (self.money.can_spend_at(Region.ranch, 100000) | self.money.can_trade_at(Region.qi_walnut_room, Currency.qi_gem, 100)), AnimalProduct.void_egg_starter: self.money.can_spend_at(Region.sewer, 5000) | (self.building.has_building(Building.fish_pond) & self.has(Fish.void_salmon)), @@ -198,7 +199,7 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC ArtisanGood.targeted_bait: self.artisan.has_targeted_bait(), ArtisanGood.stardrop_tea: self.has(WaterChest.golden_fishing_chest), ArtisanGood.truffle_oil: self.has(AnimalProduct.truffle) & self.has(Machine.oil_maker), - ArtisanGood.void_mayonnaise: (self.skill.can_fish(Region.witch_swamp)) | (self.artisan.can_mayonnaise(AnimalProduct.void_egg)), + ArtisanGood.void_mayonnaise: self.artisan.can_mayonnaise(AnimalProduct.void_egg), Beverage.pina_colada: self.money.can_spend_at(Region.island_resort, 600), Beverage.triple_shot_espresso: self.has("Hot Java Ring"), Consumable.butterfly_powder: self.money.can_spend_at(Region.sewer, 20000), @@ -217,15 +218,15 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC Fertilizer.quality: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), Fertilizer.tree: self.skill.has_level(Skill.foraging, 7) & self.has(Material.fiber) & self.has(Material.stone), Fish.any: self.logic.or_(*(self.fishing.can_catch_fish(fish) for fish in content.fishes.values())), - Fish.crab: self.skill.can_crab_pot_at(Region.beach), - Fish.crayfish: self.skill.can_crab_pot_at(Region.town), - Fish.lobster: self.skill.can_crab_pot_at(Region.beach), + Fish.crab: self.fishing.can_crab_pot_at(Region.beach), + Fish.crayfish: self.fishing.can_crab_pot_at(Region.town), + Fish.lobster: self.fishing.can_crab_pot_at(Region.beach), Fish.mussel: self.tool.can_forage(Generic.any, Region.beach) or self.has(Fish.mussel_node), Fish.mussel_node: self.region.can_reach(Region.island_west), Fish.oyster: self.tool.can_forage(Generic.any, Region.beach), - Fish.periwinkle: self.skill.can_crab_pot_at(Region.town), - Fish.shrimp: self.skill.can_crab_pot_at(Region.beach), - Fish.snail: self.skill.can_crab_pot_at(Region.town), + Fish.periwinkle: self.fishing.can_crab_pot_at(Region.town), + Fish.shrimp: self.fishing.can_crab_pot_at(Region.beach), + Fish.snail: self.fishing.can_crab_pot_at(Region.town), Fishing.curiosity_lure: self.monster.can_kill(self.monster.all_monsters_by_name[Monster.mummy]), Fishing.lead_bobber: self.skill.has_level(Skill.fishing, 6) & self.money.can_spend_at(Region.fish_shop, 200), Forageable.hay: self.building.has_building(Building.silo) & self.tool.has_tool(Tool.scythe), # @@ -233,9 +234,9 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC Forageable.secret_note: self.quest.has_magnifying_glass() & (self.ability.can_chop_trees() | self.mine.can_mine_in_the_mines_floor_1_40()), # Fossil.bone_fragment: (self.region.can_reach(Region.dig_site) & self.tool.has_tool(Tool.pickaxe)) | self.monster.can_kill(Monster.skeleton), Fossil.fossilized_leg: self.region.can_reach(Region.dig_site) & self.tool.has_tool(Tool.pickaxe), - Fossil.fossilized_ribs: self.region.can_reach(Region.island_south) & self.tool.has_tool(Tool.hoe), + Fossil.fossilized_ribs: self.region.can_reach(Region.island_south) & self.tool.has_tool(Tool.hoe) & self.received("Open Professor Snail Cave"), Fossil.fossilized_skull: self.action.can_open_geode(Geode.golden_coconut), - Fossil.fossilized_spine: self.skill.can_fish(Region.dig_site), + Fossil.fossilized_spine: self.fishing.can_fish_at(Region.dig_site), Fossil.fossilized_tail: self.action.can_pan_at(Region.dig_site, ToolMaterial.copper), Fossil.mummified_bat: self.region.can_reach(Region.volcano_floor_10), Fossil.mummified_frog: self.region.can_reach(Region.island_east) & self.tool.has_tool(Tool.scythe), @@ -288,20 +289,20 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC MetalBar.quartz: self.can_smelt(Mineral.quartz) | self.can_smelt("Fire Quartz") | (self.has(Machine.recycling_machine) & (self.has(Trash.broken_cd) | self.has(Trash.broken_glasses))), MetalBar.radioactive: self.can_smelt(Ore.radioactive), Ore.copper: self.mine.can_mine_in_the_mines_floor_1_40() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.copper), - Ore.gold: self.mine.can_mine_in_the_mines_floor_81_120() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.iron), - Ore.iridium: self.mine.can_mine_in_the_skull_cavern() | self.can_fish_pond(Fish.super_cucumber) | self.tool.has_tool(Tool.pan, ToolMaterial.gold), - Ore.iron: self.mine.can_mine_in_the_mines_floor_41_80() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.copper), + Ore.gold: self.mine.can_mine_in_the_mines_floor_81_120() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.gold), + Ore.iridium: self.count(2, *(self.mine.can_mine_in_the_skull_cavern(), self.can_fish_pond(Fish.super_cucumber), self.tool.has_tool(Tool.pan, ToolMaterial.iridium))), + Ore.iron: self.mine.can_mine_in_the_mines_floor_41_80() | self.mine.can_mine_in_the_skull_cavern() | self.tool.has_tool(Tool.pan, ToolMaterial.iron), Ore.radioactive: self.ability.can_mine_perfectly() & self.region.can_reach(Region.qi_walnut_room), RetainingSoil.basic: self.money.can_spend_at(Region.pierre_store, 100), RetainingSoil.quality: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), SpeedGro.basic: self.money.can_spend_at(Region.pierre_store, 100), SpeedGro.deluxe: self.time.has_year_two & self.money.can_spend_at(Region.pierre_store, 150), - Trash.broken_cd: self.skill.can_crab_pot, - Trash.broken_glasses: self.skill.can_crab_pot, - Trash.driftwood: self.skill.can_crab_pot, + Trash.broken_cd: self.fishing.can_crab_pot_anywhere, + Trash.broken_glasses: self.fishing.can_crab_pot_anywhere, + Trash.driftwood: self.fishing.can_crab_pot_anywhere, Trash.joja_cola: self.money.can_spend_at(Region.saloon, 75), - Trash.soggy_newspaper: self.skill.can_crab_pot, - Trash.trash: self.skill.can_crab_pot, + Trash.soggy_newspaper: self.fishing.can_crab_pot_anywhere, + Trash.trash: self.fishing.can_crab_pot_anywhere, TreeSeed.acorn: self.skill.has_level(Skill.foraging, 1) & self.ability.can_chop_trees(), TreeSeed.mahogany: self.region.can_reach(Region.secret_woods) & self.tool.has_tool(Tool.axe, ToolMaterial.iron) & self.skill.has_level(Skill.foraging, 1), TreeSeed.maple: self.skill.has_level(Skill.foraging, 1) & self.ability.can_chop_trees(), @@ -314,8 +315,8 @@ def __init__(self, player: int, options: StardewValleyOptions, content: StardewC WaterItem.cave_jelly: self.fishing.can_fish_at(Region.mines_floor_100) & self.tool.has_fishing_rod(2), WaterItem.river_jelly: self.fishing.can_fish_at(Region.town) & self.tool.has_fishing_rod(2), WaterItem.sea_jelly: self.fishing.can_fish_at(Region.beach) & self.tool.has_fishing_rod(2), - WaterItem.seaweed: self.skill.can_fish(Region.tide_pools), - WaterItem.white_algae: self.skill.can_fish(Region.mines_floor_20), + WaterItem.seaweed: self.fishing.can_fish_at(Region.tide_pools), + WaterItem.white_algae: self.fishing.can_fish_at(Region.mines_floor_20), WildSeeds.grass_starter: self.money.can_spend_at(Region.pierre_store, 100), }) # @formatter:on @@ -381,5 +382,8 @@ def has_movie_theater(self) -> StardewRule: def can_use_obelisk(self, obelisk: str) -> StardewRule: return self.region.can_reach(Region.farm) & self.received(obelisk) - def can_fish_pond(self, fish: str) -> StardewRule: - return self.building.has_building(Building.fish_pond) & self.has(fish) + def can_fish_pond(self, fish: str, *items: str) -> StardewRule: + rule = self.building.has_building(Building.fish_pond) & self.has(fish) + if items: + rule = rule & self.has_all(*items) + return rule diff --git a/worlds/stardew_valley/logic/museum_logic.py b/worlds/stardew_valley/logic/museum_logic.py index 2237cd89ea65..21718db27c9f 100644 --- a/worlds/stardew_valley/logic/museum_logic.py +++ b/worlds/stardew_valley/logic/museum_logic.py @@ -1,13 +1,5 @@ -from typing import Union - from Utils import cache_self1 -from .action_logic import ActionLogicMixin from .base_logic import BaseLogic, BaseLogicMixin -from .has_logic import HasLogicMixin -from .received_logic import ReceivedLogicMixin -from .region_logic import RegionLogicMixin -from .time_logic import TimeLogicMixin -from .tool_logic import ToolLogicMixin from .. import options from ..data.museum_data import MuseumItem, all_museum_items, all_museum_artifacts, all_museum_minerals from ..stardew_rule import StardewRule, False_ diff --git a/worlds/stardew_valley/logic/quest_logic.py b/worlds/stardew_valley/logic/quest_logic.py index e48324680d9f..af52d06e30bf 100644 --- a/worlds/stardew_valley/logic/quest_logic.py +++ b/worlds/stardew_valley/logic/quest_logic.py @@ -39,7 +39,7 @@ def initialize_rules(self): Quest.raising_animals: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.building.has_building(Building.coop), Quest.feeding_animals: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.building.has_building(Building.silo), Quest.advancement: self.logic.quest.can_complete_quest(Quest.getting_started) & self.logic.has(Craftable.scarecrow), - Quest.archaeology: self.logic.tool.has_tool(Tool.hoe) | self.logic.mine.can_mine_in_the_mines_floor_1_40() | self.logic.skill.can_fish(), + Quest.archaeology: self.logic.tool.has_tool(Tool.hoe) | self.logic.mine.can_mine_in_the_mines_floor_1_40() | self.logic.fishing.can_fish_chests, Quest.rat_problem: self.logic.region.can_reach_all((Region.town, Region.community_center)), Quest.meet_the_wizard: self.logic.quest.can_complete_quest(Quest.rat_problem), Quest.forging_ahead: self.logic.has(Ore.copper) & self.logic.has(Machine.furnace), @@ -86,8 +86,10 @@ def initialize_rules(self): Quest.catch_a_lingcod: self.logic.season.has(Season.winter) & self.logic.has(Fish.lingcod) & self.logic.relationship.can_meet(NPC.willy), Quest.dark_talisman: self.logic.region.can_reach(Region.railroad) & self.logic.wallet.has_rusty_key() & self.logic.relationship.can_meet( NPC.krobus), - Quest.goblin_problem: self.logic.region.can_reach(Region.witch_swamp), - Quest.magic_ink: self.logic.relationship.can_meet(NPC.wizard), + Quest.goblin_problem: self.logic.region.can_reach(Region.witch_swamp) + # Void mayo can be fished at 5% chance in the witch swamp while the quest is active. It drops a lot after the quest. + & (self.logic.has(ArtisanGood.void_mayonnaise) | self.logic.fishing.can_fish()), + Quest.magic_ink: self.logic.region.can_reach(Region.witch_hut) & self.logic.relationship.can_meet(NPC.wizard), Quest.the_pirates_wife: self.logic.relationship.can_meet(NPC.kent) & self.logic.relationship.can_meet(NPC.gus) & self.logic.relationship.can_meet(NPC.sandy) & self.logic.relationship.can_meet(NPC.george) & self.logic.relationship.can_meet(NPC.wizard) & self.logic.relationship.can_meet(NPC.willy), diff --git a/worlds/stardew_valley/logic/region_logic.py b/worlds/stardew_valley/logic/region_logic.py index 083f56e1676c..81c79be097b8 100644 --- a/worlds/stardew_valley/logic/region_logic.py +++ b/worlds/stardew_valley/logic/region_logic.py @@ -1,23 +1,23 @@ -from typing import Tuple, Union +from typing import Tuple from Utils import cache_self1 from .base_logic import BaseLogic, BaseLogicMixin -from .has_logic import HasLogicMixin from ..options import EntranceRandomization from ..stardew_rule import StardewRule, Reach, false_, true_ from ..strings.region_names import Region main_outside_area = {Region.menu, Region.stardew_valley, Region.farm_house, Region.farm, Region.town, Region.beach, Region.mountain, Region.forest, Region.bus_stop, Region.backwoods, Region.bus_tunnel, Region.tunnel_entrance} -always_accessible_regions_without_er = {*main_outside_area, Region.community_center, Region.pantry, Region.crafts_room, Region.fish_tank, Region.boiler_room, - Region.vault, Region.bulletin_board, Region.mines, Region.hospital, Region.carpenter, Region.alex_house, - Region.elliott_house, Region.ranch, Region.farm_cave, Region.wizard_tower, Region.tent, Region.pierre_store, - Region.saloon, Region.blacksmith, Region.trailer, Region.museum, Region.mayor_house, Region.haley_house, - Region.sam_house, Region.jojamart, Region.fish_shop} +always_accessible_regions_with_non_progression_er = {*main_outside_area, Region.mines, Region.hospital, Region.carpenter, Region.alex_house, + Region.ranch, Region.farm_cave, Region.wizard_tower, Region.tent, + Region.pierre_store, Region.saloon, Region.blacksmith, Region.trailer, Region.museum, Region.mayor_house, + Region.haley_house, Region.sam_house, Region.jojamart, Region.fish_shop} +always_accessible_regions_without_er = {*always_accessible_regions_with_non_progression_er, Region.community_center, Region.pantry, Region.crafts_room, + Region.fish_tank, Region.boiler_room, Region.vault, Region.bulletin_board} always_regions_by_setting = {EntranceRandomization.option_disabled: always_accessible_regions_without_er, EntranceRandomization.option_pelican_town: always_accessible_regions_without_er, - EntranceRandomization.option_non_progression: always_accessible_regions_without_er, + EntranceRandomization.option_non_progression: always_accessible_regions_with_non_progression_er, EntranceRandomization.option_buildings_without_house: main_outside_area, EntranceRandomization.option_buildings: main_outside_area, EntranceRandomization.option_chaos: always_accessible_regions_without_er} diff --git a/worlds/stardew_valley/logic/skill_logic.py b/worlds/stardew_valley/logic/skill_logic.py index e02b180f6a41..b582eb361329 100644 --- a/worlds/stardew_valley/logic/skill_logic.py +++ b/worlds/stardew_valley/logic/skill_logic.py @@ -1,13 +1,10 @@ from functools import cached_property -from typing import Union, Tuple from Utils import cache_self1 from .base_logic import BaseLogicMixin, BaseLogic from ..data.harvest import HarvestCropSource from ..mods.logic.mod_skills_levels import get_mod_skill_levels from ..stardew_rule import StardewRule, true_, True_, False_ -from ..strings.craftable_names import Fishing -from ..strings.machine_names import Machine from ..strings.performance_names import Performance from ..strings.quality_names import ForageQuality from ..strings.region_names import Region @@ -15,7 +12,6 @@ from ..strings.tool_names import ToolMaterial, Tool from ..strings.wallet_item_names import Wallet -fishing_regions = (Region.beach, Region.town, Region.forest, Region.mountain, Region.island_south, Region.island_west) vanilla_skill_items = ("Farming Level", "Mining Level", "Foraging Level", "Fishing Level", "Combat Level") @@ -38,7 +34,8 @@ def can_earn_level(self, skill: str, level: int) -> StardewRule: previous_level_rule = self.logic.skill.has_previous_level(skill, level) if skill == Skill.fishing: - xp_rule = self.logic.tool.has_fishing_rod(max(tool_level, 3)) + # Not checking crab pot as this is used for not randomized skills logic, for which players need a fishing rod to start gaining xp. + xp_rule = self.logic.tool.has_fishing_rod(max(tool_level, 3)) & self.logic.fishing.can_fish_anywhere() elif skill == Skill.farming: xp_rule = self.can_get_farming_xp & self.logic.tool.has_tool(Tool.hoe, tool_material) & self.logic.tool.can_water(tool_level) elif skill == Skill.foraging: @@ -138,44 +135,9 @@ def can_get_combat_xp(self) -> StardewRule: @cached_property def can_get_fishing_xp(self) -> StardewRule: if self.content.features.skill_progression.is_progressive: - return self.logic.skill.can_fish() | self.logic.skill.can_crab_pot + return self.logic.fishing.can_fish_anywhere() | self.logic.fishing.can_crab_pot_anywhere - return self.logic.skill.can_fish() - - # Should be cached - def can_fish(self, regions: Union[str, Tuple[str, ...]] = None, difficulty: int = 0) -> StardewRule: - if isinstance(regions, str): - regions = regions, - - if regions is None or len(regions) == 0: - regions = fishing_regions - - skill_required = min(10, max(0, int((difficulty / 10) - 1))) - if difficulty <= 40: - skill_required = 0 - - skill_rule = self.logic.skill.has_level(Skill.fishing, skill_required) - region_rule = self.logic.region.can_reach_any(regions) - # Training rod only works with fish < 50. Fiberglass does not help you to catch higher difficulty fish, so it's skipped in logic. - number_fishing_rod_required = 1 if difficulty < 50 else (2 if difficulty < 80 else 4) - return self.logic.tool.has_fishing_rod(number_fishing_rod_required) & skill_rule & region_rule - - @cache_self1 - def can_crab_pot_at(self, region: str) -> StardewRule: - return self.logic.skill.can_crab_pot & self.logic.region.can_reach(region) - - @cached_property - def can_crab_pot(self) -> StardewRule: - crab_pot_rule = self.logic.has(Fishing.bait) - - # We can't use the same rule if skills are vanilla, because fishing levels are required to crab pot, which is required to get fishing levels... - if self.content.features.skill_progression.is_progressive: - crab_pot_rule = crab_pot_rule & self.logic.has(Machine.crab_pot) - else: - crab_pot_rule = crab_pot_rule & self.logic.skill.can_get_fishing_xp - - water_region_rules = self.logic.region.can_reach_any(fishing_regions) - return crab_pot_rule & water_region_rules + return self.logic.fishing.can_fish_anywhere() def can_forage_quality(self, quality: str) -> StardewRule: if quality == ForageQuality.basic: diff --git a/worlds/stardew_valley/logic/special_order_logic.py b/worlds/stardew_valley/logic/special_order_logic.py index a81f715c4866..73276ce97f38 100644 --- a/worlds/stardew_valley/logic/special_order_logic.py +++ b/worlds/stardew_valley/logic/special_order_logic.py @@ -42,7 +42,7 @@ def initialize_rules(self): SpecialOrder.fragments_of_the_past: self.logic.monster.can_kill(Monster.skeleton), SpecialOrder.gus_famous_omelet: self.logic.has(AnimalProduct.any_egg), SpecialOrder.crop_order: self.logic.ability.can_farm_perfectly() & self.logic.shipping.can_use_shipping_bin, - SpecialOrder.community_cleanup: self.logic.skill.can_crab_pot, + SpecialOrder.community_cleanup: self.logic.fishing.can_crab_pot_anywhere, SpecialOrder.the_strong_stuff: self.logic.has(ArtisanGood.specific_juice(Vegetable.potato)), SpecialOrder.pierres_prime_produce: self.logic.ability.can_farm_perfectly(), SpecialOrder.robins_project: self.logic.relationship.can_meet(NPC.robin) & self.logic.ability.can_chop_perfectly() & diff --git a/worlds/stardew_valley/mods/logic/skills_logic.py b/worlds/stardew_valley/mods/logic/skills_logic.py index b1f10d08b97e..d57e6c59313a 100644 --- a/worlds/stardew_valley/mods/logic/skills_logic.py +++ b/worlds/stardew_valley/mods/logic/skills_logic.py @@ -44,9 +44,9 @@ def can_earn_mod_skill_level(self, skill: str, level: int) -> StardewRule: def can_earn_luck_skill_level(self, level: int) -> StardewRule: if level >= 6: - return self.logic.fishing.can_fish_chests() | self.logic.action.can_open_geode(Geode.magma) + return self.logic.fishing.can_fish_chests | self.logic.action.can_open_geode(Geode.magma) if level >= 3: - return self.logic.fishing.can_fish_chests() | self.logic.action.can_open_geode(Geode.geode) + return self.logic.fishing.can_fish_chests | self.logic.action.can_open_geode(Geode.geode) return True_() # You can literally wake up and or get them by opening starting chests. def can_earn_magic_skill_level(self, level: int) -> StardewRule: diff --git a/worlds/stardew_valley/mods/logic/sve_logic.py b/worlds/stardew_valley/mods/logic/sve_logic.py index 7f0c12bc4f1e..03f1737c5919 100644 --- a/worlds/stardew_valley/mods/logic/sve_logic.py +++ b/worlds/stardew_valley/mods/logic/sve_logic.py @@ -1,8 +1,7 @@ -from ..mod_regions import SVERegion from ...logic.base_logic import BaseLogicMixin, BaseLogic from ...strings.ap_names.mods.mod_items import SVELocation, SVERunes, SVEQuestItem from ...strings.quest_names import Quest, ModQuest -from ...strings.region_names import Region +from ...strings.region_names import Region, SVERegion from ...strings.tool_names import Tool, ToolMaterial from ...strings.wallet_item_names import Wallet diff --git a/worlds/stardew_valley/mods/mod_regions.py b/worlds/stardew_valley/mods/region_data.py similarity index 61% rename from worlds/stardew_valley/mods/mod_regions.py rename to worlds/stardew_valley/mods/region_data.py index a402ba606868..5dc4a3dff28b 100644 --- a/worlds/stardew_valley/mods/mod_regions.py +++ b/worlds/stardew_valley/mods/region_data.py @@ -1,15 +1,14 @@ -from typing import Dict, List - from .mod_data import ModNames -from ..region_classes import RegionData, ConnectionData, ModificationFlag, RandomizationFlag, ModRegionData +from ..content.mods.sve import SVE_GINGER_ISLAND_PACK +from ..regions.model import RegionData, ConnectionData, MergeFlag, RandomizationFlag, ModRegionsData from ..strings.entrance_names import Entrance, DeepWoodsEntrance, EugeneEntrance, LaceyEntrance, BoardingHouseEntrance, \ JasperEntrance, AlecEntrance, YobaEntrance, JunaEntrance, MagicEntrance, AyeishaEntrance, RileyEntrance, SVEEntrance, AlectoEntrance from ..strings.region_names import Region, DeepWoodsRegion, EugeneRegion, JasperRegion, BoardingHouseRegion, \ AlecRegion, YobaRegion, JunaRegion, MagicRegion, AyeishaRegion, RileyRegion, SVERegion, AlectoRegion, LaceyRegion deep_woods_regions = [ - RegionData(Region.farm, [DeepWoodsEntrance.use_woods_obelisk]), - RegionData(DeepWoodsRegion.woods_obelisk_menu, [DeepWoodsEntrance.deep_woods_depth_1, + RegionData(Region.farm, (DeepWoodsEntrance.use_woods_obelisk,)), + RegionData(DeepWoodsRegion.woods_obelisk_menu, (DeepWoodsEntrance.deep_woods_depth_1, DeepWoodsEntrance.deep_woods_depth_10, DeepWoodsEntrance.deep_woods_depth_20, DeepWoodsEntrance.deep_woods_depth_30, @@ -19,9 +18,9 @@ DeepWoodsEntrance.deep_woods_depth_70, DeepWoodsEntrance.deep_woods_depth_80, DeepWoodsEntrance.deep_woods_depth_90, - DeepWoodsEntrance.deep_woods_depth_100]), - RegionData(Region.secret_woods, [DeepWoodsEntrance.secret_woods_to_deep_woods]), - RegionData(DeepWoodsRegion.main_lichtung, [DeepWoodsEntrance.deep_woods_house]), + DeepWoodsEntrance.deep_woods_depth_100)), + RegionData(Region.secret_woods, (DeepWoodsEntrance.secret_woods_to_deep_woods,)), + RegionData(DeepWoodsRegion.main_lichtung, (DeepWoodsEntrance.deep_woods_house,)), RegionData(DeepWoodsRegion.abandoned_home), RegionData(DeepWoodsRegion.floor_10), RegionData(DeepWoodsRegion.floor_20), @@ -32,14 +31,13 @@ RegionData(DeepWoodsRegion.floor_70), RegionData(DeepWoodsRegion.floor_80), RegionData(DeepWoodsRegion.floor_90), - RegionData(DeepWoodsRegion.floor_100) + RegionData(DeepWoodsRegion.floor_100), ] deep_woods_entrances = [ ConnectionData(DeepWoodsEntrance.use_woods_obelisk, DeepWoodsRegion.woods_obelisk_menu), ConnectionData(DeepWoodsEntrance.secret_woods_to_deep_woods, DeepWoodsRegion.main_lichtung), - ConnectionData(DeepWoodsEntrance.deep_woods_house, DeepWoodsRegion.abandoned_home, - flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(DeepWoodsEntrance.deep_woods_house, DeepWoodsRegion.abandoned_home, flag=RandomizationFlag.BUILDINGS), ConnectionData(DeepWoodsEntrance.deep_woods_depth_1, DeepWoodsRegion.main_lichtung), ConnectionData(DeepWoodsEntrance.deep_woods_depth_10, DeepWoodsRegion.floor_10), ConnectionData(DeepWoodsEntrance.deep_woods_depth_20, DeepWoodsRegion.floor_20), @@ -50,165 +48,166 @@ ConnectionData(DeepWoodsEntrance.deep_woods_depth_70, DeepWoodsRegion.floor_70), ConnectionData(DeepWoodsEntrance.deep_woods_depth_80, DeepWoodsRegion.floor_80), ConnectionData(DeepWoodsEntrance.deep_woods_depth_90, DeepWoodsRegion.floor_90), - ConnectionData(DeepWoodsEntrance.deep_woods_depth_100, DeepWoodsRegion.floor_100) + ConnectionData(DeepWoodsEntrance.deep_woods_depth_100, DeepWoodsRegion.floor_100), ] eugene_regions = [ - RegionData(Region.forest, [EugeneEntrance.forest_to_garden]), - RegionData(EugeneRegion.eugene_garden, [EugeneEntrance.garden_to_bedroom]), - RegionData(EugeneRegion.eugene_bedroom) + RegionData(Region.forest, (EugeneEntrance.forest_to_garden,)), + RegionData(EugeneRegion.eugene_garden, (EugeneEntrance.garden_to_bedroom,)), + RegionData(EugeneRegion.eugene_bedroom), ] eugene_entrances = [ ConnectionData(EugeneEntrance.forest_to_garden, EugeneRegion.eugene_garden, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(EugeneEntrance.garden_to_bedroom, EugeneRegion.eugene_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(EugeneEntrance.garden_to_bedroom, EugeneRegion.eugene_bedroom, flag=RandomizationFlag.BUILDINGS), ] magic_regions = [ - RegionData(Region.pierre_store, [MagicEntrance.store_to_altar]), - RegionData(MagicRegion.altar) + RegionData(Region.pierre_store, (MagicEntrance.store_to_altar,)), + RegionData(MagicRegion.altar), ] magic_entrances = [ - ConnectionData(MagicEntrance.store_to_altar, MagicRegion.altar, flag=RandomizationFlag.NOT_RANDOMIZED) + ConnectionData(MagicEntrance.store_to_altar, MagicRegion.altar, flag=RandomizationFlag.NOT_RANDOMIZED), ] jasper_regions = [ - RegionData(Region.museum, [JasperEntrance.museum_to_bedroom]), - RegionData(JasperRegion.jasper_bedroom) + RegionData(Region.museum, (JasperEntrance.museum_to_bedroom,)), + RegionData(JasperRegion.jasper_bedroom), ] jasper_entrances = [ - ConnectionData(JasperEntrance.museum_to_bedroom, JasperRegion.jasper_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(JasperEntrance.museum_to_bedroom, JasperRegion.jasper_bedroom, flag=RandomizationFlag.BUILDINGS), ] alec_regions = [ - RegionData(Region.forest, [AlecEntrance.forest_to_petshop]), - RegionData(AlecRegion.pet_store, [AlecEntrance.petshop_to_bedroom]), - RegionData(AlecRegion.alec_bedroom) + RegionData(Region.forest, (AlecEntrance.forest_to_petshop,)), + RegionData(AlecRegion.pet_store, (AlecEntrance.petshop_to_bedroom,)), + RegionData(AlecRegion.alec_bedroom), ] alec_entrances = [ ConnectionData(AlecEntrance.forest_to_petshop, AlecRegion.pet_store, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(AlecEntrance.petshop_to_bedroom, AlecRegion.alec_bedroom, flag=RandomizationFlag.BUILDINGS) + ConnectionData(AlecEntrance.petshop_to_bedroom, AlecRegion.alec_bedroom, flag=RandomizationFlag.BUILDINGS), ] yoba_regions = [ - RegionData(Region.secret_woods, [YobaEntrance.secret_woods_to_clearing]), - RegionData(YobaRegion.yoba_clearing) + RegionData(Region.secret_woods, (YobaEntrance.secret_woods_to_clearing,)), + RegionData(YobaRegion.yoba_clearing), ] yoba_entrances = [ - ConnectionData(YobaEntrance.secret_woods_to_clearing, YobaRegion.yoba_clearing, flag=RandomizationFlag.BUILDINGS) + ConnectionData(YobaEntrance.secret_woods_to_clearing, YobaRegion.yoba_clearing, flag=RandomizationFlag.BUILDINGS), ] juna_regions = [ - RegionData(Region.forest, [JunaEntrance.forest_to_juna_cave]), - RegionData(JunaRegion.juna_cave) + RegionData(Region.forest, (JunaEntrance.forest_to_juna_cave,)), + RegionData(JunaRegion.juna_cave), ] juna_entrances = [ ConnectionData(JunaEntrance.forest_to_juna_cave, JunaRegion.juna_cave, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] ayeisha_regions = [ - RegionData(Region.bus_stop, [AyeishaEntrance.bus_stop_to_mail_van]), - RegionData(AyeishaRegion.mail_van) + RegionData(Region.bus_stop, (AyeishaEntrance.bus_stop_to_mail_van,)), + RegionData(AyeishaRegion.mail_van), ] ayeisha_entrances = [ ConnectionData(AyeishaEntrance.bus_stop_to_mail_van, AyeishaRegion.mail_van, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] riley_regions = [ - RegionData(Region.town, [RileyEntrance.town_to_riley]), - RegionData(RileyRegion.riley_house) + RegionData(Region.town, (RileyEntrance.town_to_riley,)), + RegionData(RileyRegion.riley_house), ] riley_entrances = [ ConnectionData(RileyEntrance.town_to_riley, RileyRegion.riley_house, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA) + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ] -stardew_valley_expanded_regions = [ - RegionData(Region.backwoods, [SVEEntrance.backwoods_to_grove]), - RegionData(SVERegion.enchanted_grove, [SVEEntrance.grove_to_outpost_warp, SVEEntrance.grove_to_wizard_warp, +sve_main_land_regions = [ + RegionData(Region.backwoods, (SVEEntrance.backwoods_to_grove,)), + RegionData(SVERegion.enchanted_grove, (SVEEntrance.grove_to_outpost_warp, SVEEntrance.grove_to_wizard_warp, SVEEntrance.grove_to_farm_warp, SVEEntrance.grove_to_guild_warp, SVEEntrance.grove_to_junimo_warp, - SVEEntrance.grove_to_spring_warp, SVEEntrance.grove_to_aurora_warp]), - RegionData(SVERegion.grove_farm_warp, [SVEEntrance.farm_warp_to_farm]), - RegionData(SVERegion.grove_aurora_warp, [SVEEntrance.aurora_warp_to_aurora]), - RegionData(SVERegion.grove_guild_warp, [SVEEntrance.guild_warp_to_guild]), - RegionData(SVERegion.grove_junimo_warp, [SVEEntrance.junimo_warp_to_junimo]), - RegionData(SVERegion.grove_spring_warp, [SVEEntrance.spring_warp_to_spring]), - RegionData(SVERegion.grove_outpost_warp, [SVEEntrance.outpost_warp_to_outpost]), - RegionData(SVERegion.grove_wizard_warp, [SVEEntrance.wizard_warp_to_wizard]), - RegionData(SVERegion.galmoran_outpost, [SVEEntrance.outpost_to_badlands_entrance, SVEEntrance.use_alesia_shop, - SVEEntrance.use_isaac_shop]), - RegionData(SVERegion.badlands_entrance, [SVEEntrance.badlands_entrance_to_badlands]), - RegionData(SVERegion.crimson_badlands, [SVEEntrance.badlands_to_cave]), + SVEEntrance.grove_to_spring_warp, SVEEntrance.grove_to_aurora_warp)), + RegionData(SVERegion.grove_farm_warp, (SVEEntrance.farm_warp_to_farm,)), + RegionData(SVERegion.grove_aurora_warp, (SVEEntrance.aurora_warp_to_aurora,)), + RegionData(SVERegion.grove_guild_warp, (SVEEntrance.guild_warp_to_guild,)), + RegionData(SVERegion.grove_junimo_warp, (SVEEntrance.junimo_warp_to_junimo,)), + RegionData(SVERegion.grove_spring_warp, (SVEEntrance.spring_warp_to_spring,)), + RegionData(SVERegion.grove_outpost_warp, (SVEEntrance.outpost_warp_to_outpost,)), + RegionData(SVERegion.grove_wizard_warp, (SVEEntrance.wizard_warp_to_wizard,)), + RegionData(SVERegion.galmoran_outpost, (SVEEntrance.outpost_to_badlands_entrance, SVEEntrance.use_alesia_shop, SVEEntrance.use_isaac_shop)), + RegionData(SVERegion.badlands_entrance, (SVEEntrance.badlands_entrance_to_badlands,)), + RegionData(SVERegion.crimson_badlands, (SVEEntrance.badlands_to_cave,)), RegionData(SVERegion.badlands_cave), - RegionData(Region.bus_stop, [SVEEntrance.bus_stop_to_shed]), - RegionData(SVERegion.grandpas_shed, [SVEEntrance.grandpa_shed_to_interior, SVEEntrance.grandpa_shed_to_town]), - RegionData(SVERegion.grandpas_shed_interior, [SVEEntrance.grandpa_interior_to_upstairs]), + RegionData(Region.bus_stop, (SVEEntrance.bus_stop_to_shed,)), + RegionData(SVERegion.grandpas_shed, (SVEEntrance.grandpa_shed_to_interior, SVEEntrance.grandpa_shed_to_town)), + RegionData(SVERegion.grandpas_shed_interior, (SVEEntrance.grandpa_interior_to_upstairs,)), RegionData(SVERegion.grandpas_shed_upstairs), RegionData(Region.forest, - [SVEEntrance.forest_to_fairhaven, SVEEntrance.forest_to_west, SVEEntrance.forest_to_lost_woods, - SVEEntrance.forest_to_bmv, SVEEntrance.forest_to_marnie_shed]), + (SVEEntrance.forest_to_fairhaven, SVEEntrance.forest_to_west, SVEEntrance.forest_to_lost_woods, + SVEEntrance.forest_to_bmv, SVEEntrance.forest_to_marnie_shed)), RegionData(SVERegion.marnies_shed), RegionData(SVERegion.fairhaven_farm), - RegionData(Region.town, [SVEEntrance.town_to_bmv, SVEEntrance.town_to_jenkins, - SVEEntrance.town_to_bridge, SVEEntrance.town_to_plot]), - RegionData(SVERegion.blue_moon_vineyard, [SVEEntrance.bmv_to_sophia, SVEEntrance.bmv_to_beach]), + RegionData(Region.town, (SVEEntrance.town_to_bmv, SVEEntrance.town_to_jenkins, SVEEntrance.town_to_bridge, SVEEntrance.town_to_plot)), + RegionData(SVERegion.blue_moon_vineyard, (SVEEntrance.bmv_to_sophia, SVEEntrance.bmv_to_beach)), RegionData(SVERegion.sophias_house), - RegionData(SVERegion.jenkins_residence, [SVEEntrance.jenkins_to_cellar]), + RegionData(SVERegion.jenkins_residence, (SVEEntrance.jenkins_to_cellar,)), RegionData(SVERegion.jenkins_cellar), - RegionData(SVERegion.unclaimed_plot, [SVEEntrance.plot_to_bridge]), + RegionData(SVERegion.unclaimed_plot, (SVEEntrance.plot_to_bridge,)), RegionData(SVERegion.shearwater), - RegionData(Region.museum, [SVEEntrance.museum_to_gunther_bedroom]), + RegionData(Region.museum, (SVEEntrance.museum_to_gunther_bedroom,)), RegionData(SVERegion.gunther_bedroom), - RegionData(Region.fish_shop, [SVEEntrance.fish_shop_to_willy_bedroom]), + RegionData(Region.fish_shop, (SVEEntrance.fish_shop_to_willy_bedroom,)), RegionData(SVERegion.willy_bedroom), - RegionData(Region.mountain, [SVEEntrance.mountain_to_guild_summit]), - RegionData(SVERegion.guild_summit, [SVEEntrance.guild_to_interior, SVEEntrance.guild_to_mines, - SVEEntrance.summit_to_highlands]), - RegionData(Region.railroad, [SVEEntrance.to_susan_house, SVEEntrance.enter_summit, SVEEntrance.railroad_to_grampleton_station]), - RegionData(SVERegion.grampleton_station, [SVEEntrance.grampleton_station_to_grampleton_suburbs]), - RegionData(SVERegion.grampleton_suburbs, [SVEEntrance.grampleton_suburbs_to_scarlett_house]), + RegionData(Region.mountain, (SVEEntrance.mountain_to_guild_summit,)), + # These entrances are removed from the mountain region when SVE is enabled + RegionData(Region.mountain, (Entrance.mountain_to_adventurer_guild, Entrance.mountain_to_the_mines), flag=MergeFlag.REMOVE_EXITS), + RegionData(SVERegion.guild_summit, (SVEEntrance.guild_to_interior, SVEEntrance.guild_to_mines)), + RegionData(Region.railroad, (SVEEntrance.to_susan_house, SVEEntrance.enter_summit, SVEEntrance.railroad_to_grampleton_station)), + RegionData(SVERegion.grampleton_station, (SVEEntrance.grampleton_station_to_grampleton_suburbs,)), + RegionData(SVERegion.grampleton_suburbs, (SVEEntrance.grampleton_suburbs_to_scarlett_house,)), RegionData(SVERegion.scarlett_house), - RegionData(Region.wizard_basement, [SVEEntrance.wizard_to_fable_reef]), - RegionData(SVERegion.fable_reef, [SVEEntrance.fable_reef_to_guild], is_ginger_island=True), - RegionData(SVERegion.first_slash_guild, [SVEEntrance.first_slash_guild_to_hallway], is_ginger_island=True), - RegionData(SVERegion.first_slash_hallway, [SVEEntrance.first_slash_hallway_to_room], is_ginger_island=True), - RegionData(SVERegion.first_slash_spare_room, is_ginger_island=True), - RegionData(SVERegion.highlands_outside, [SVEEntrance.highlands_to_lance, SVEEntrance.highlands_to_cave, SVEEntrance.highlands_to_pond], is_ginger_island=True), - RegionData(SVERegion.highlands_pond, is_ginger_island=True), - RegionData(SVERegion.highlands_cavern, [SVEEntrance.to_dwarf_prison], is_ginger_island=True), - RegionData(SVERegion.dwarf_prison, is_ginger_island=True), - RegionData(SVERegion.lances_house, [SVEEntrance.lance_to_ladder], is_ginger_island=True), - RegionData(SVERegion.lances_ladder, [SVEEntrance.lance_ladder_to_highlands], is_ginger_island=True), - RegionData(SVERegion.forest_west, [SVEEntrance.forest_west_to_spring, SVEEntrance.west_to_aurora, - SVEEntrance.use_bear_shop]), - RegionData(SVERegion.aurora_vineyard, [SVEEntrance.to_aurora_basement]), + RegionData(SVERegion.forest_west, (SVEEntrance.forest_west_to_spring, SVEEntrance.west_to_aurora, SVEEntrance.use_bear_shop,)), + RegionData(SVERegion.aurora_vineyard, (SVEEntrance.to_aurora_basement,)), RegionData(SVERegion.aurora_vineyard_basement), - RegionData(Region.secret_woods, [SVEEntrance.secret_woods_to_west]), + RegionData(Region.secret_woods, (SVEEntrance.secret_woods_to_west,)), RegionData(SVERegion.bear_shop), - RegionData(SVERegion.sprite_spring, [SVEEntrance.sprite_spring_to_cave]), + RegionData(SVERegion.sprite_spring, (SVEEntrance.sprite_spring_to_cave,)), RegionData(SVERegion.sprite_spring_cave), - RegionData(SVERegion.lost_woods, [SVEEntrance.lost_woods_to_junimo_woods]), - RegionData(SVERegion.junimo_woods, [SVEEntrance.use_purple_junimo]), + RegionData(SVERegion.lost_woods, (SVEEntrance.lost_woods_to_junimo_woods,)), + RegionData(SVERegion.junimo_woods, (SVEEntrance.use_purple_junimo,)), RegionData(SVERegion.purple_junimo_shop), RegionData(SVERegion.alesia_shop), RegionData(SVERegion.isaac_shop), RegionData(SVERegion.summit), RegionData(SVERegion.susans_house), - RegionData(Region.mountain, [Entrance.mountain_to_adventurer_guild, Entrance.mountain_to_the_mines], ModificationFlag.MODIFIED) +] + +sve_ginger_island_regions = [ + RegionData(Region.wizard_basement, (SVEEntrance.wizard_to_fable_reef,)), + RegionData(SVERegion.fable_reef, (SVEEntrance.fable_reef_to_guild,)), + RegionData(SVERegion.first_slash_guild, (SVEEntrance.first_slash_guild_to_hallway,)), + RegionData(SVERegion.first_slash_hallway, (SVEEntrance.first_slash_hallway_to_room,)), + RegionData(SVERegion.first_slash_spare_room), + RegionData(SVERegion.guild_summit, (SVEEntrance.summit_to_highlands,)), + RegionData(SVERegion.highlands_outside, (SVEEntrance.highlands_to_lance, SVEEntrance.highlands_to_cave, SVEEntrance.highlands_to_pond), ), + RegionData(SVERegion.highlands_pond), + RegionData(SVERegion.highlands_cavern, (SVEEntrance.to_dwarf_prison,)), + RegionData(SVERegion.dwarf_prison), + RegionData(SVERegion.lances_house, (SVEEntrance.lance_to_ladder,)), + RegionData(SVERegion.lances_ladder, (SVEEntrance.lance_ladder_to_highlands,)), ] -mandatory_sve_connections = [ +sve_main_land_connections = [ ConnectionData(SVEEntrance.town_to_jenkins, SVERegion.jenkins_residence, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), ConnectionData(SVEEntrance.jenkins_to_cellar, SVERegion.jenkins_cellar, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.forest_to_bmv, SVERegion.blue_moon_vineyard), @@ -223,7 +222,7 @@ ConnectionData(SVEEntrance.grandpa_interior_to_upstairs, SVERegion.grandpas_shed_upstairs, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.grandpa_shed_to_town, Region.town), ConnectionData(SVEEntrance.bmv_to_sophia, SVERegion.sophias_house, flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(SVEEntrance.summit_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.GINGER_ISLAND), + ConnectionData(SVEEntrance.summit_to_highlands, SVERegion.highlands_outside), ConnectionData(SVEEntrance.guild_to_interior, Region.adventurer_guild, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.backwoods_to_grove, SVERegion.enchanted_grove, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), ConnectionData(SVEEntrance.grove_to_outpost_warp, SVERegion.grove_outpost_warp), @@ -242,8 +241,6 @@ ConnectionData(SVEEntrance.use_purple_junimo, SVERegion.purple_junimo_shop), ConnectionData(SVEEntrance.grove_to_spring_warp, SVERegion.grove_spring_warp), ConnectionData(SVEEntrance.spring_warp_to_spring, SVERegion.sprite_spring, flag=RandomizationFlag.BUILDINGS), - ConnectionData(SVEEntrance.wizard_to_fable_reef, SVERegion.fable_reef, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.fable_reef_to_guild, SVERegion.first_slash_guild, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.outpost_to_badlands_entrance, SVERegion.badlands_entrance, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.badlands_entrance_to_badlands, SVERegion.crimson_badlands, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.badlands_to_cave, SVERegion.badlands_cave, flag=RandomizationFlag.BUILDINGS), @@ -259,71 +256,75 @@ ConnectionData(SVEEntrance.to_susan_house, SVERegion.susans_house, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.enter_summit, SVERegion.summit, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.forest_to_fairhaven, SVERegion.fairhaven_farm, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(SVEEntrance.highlands_to_lance, SVERegion.lances_house, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.lance_to_ladder, SVERegion.lances_ladder, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.lance_ladder_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.highlands_to_cave, SVERegion.highlands_cavern, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.use_bear_shop, SVERegion.bear_shop), ConnectionData(SVEEntrance.use_purple_junimo, SVERegion.purple_junimo_shop), ConnectionData(SVEEntrance.use_alesia_shop, SVERegion.alesia_shop), ConnectionData(SVEEntrance.use_isaac_shop, SVERegion.isaac_shop), - ConnectionData(SVEEntrance.to_dwarf_prison, SVERegion.dwarf_prison, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.railroad_to_grampleton_station, SVERegion.grampleton_station), ConnectionData(SVEEntrance.grampleton_station_to_grampleton_suburbs, SVERegion.grampleton_suburbs), ConnectionData(SVEEntrance.grampleton_suburbs_to_scarlett_house, SVERegion.scarlett_house, flag=RandomizationFlag.BUILDINGS), - ConnectionData(SVEEntrance.first_slash_guild_to_hallway, SVERegion.first_slash_hallway, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(SVEEntrance.first_slash_hallway_to_room, SVERegion.first_slash_spare_room, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), ConnectionData(SVEEntrance.sprite_spring_to_cave, SVERegion.sprite_spring_cave, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.fish_shop_to_willy_bedroom, SVERegion.willy_bedroom, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.museum_to_gunther_bedroom, SVERegion.gunther_bedroom, flag=RandomizationFlag.BUILDINGS), ConnectionData(SVEEntrance.highlands_to_pond, SVERegion.highlands_pond), ] +sve_ginger_island_connections = [ + ConnectionData(SVEEntrance.wizard_to_fable_reef, SVERegion.fable_reef, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.fable_reef_to_guild, SVERegion.first_slash_guild, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.highlands_to_lance, SVERegion.lances_house, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.lance_to_ladder, SVERegion.lances_ladder), + ConnectionData(SVEEntrance.lance_ladder_to_highlands, SVERegion.highlands_outside, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.highlands_to_cave, SVERegion.highlands_cavern, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.to_dwarf_prison, SVERegion.dwarf_prison, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.first_slash_guild_to_hallway, SVERegion.first_slash_hallway, flag=RandomizationFlag.BUILDINGS), + ConnectionData(SVEEntrance.first_slash_hallway_to_room, SVERegion.first_slash_spare_room, flag=RandomizationFlag.BUILDINGS), +] + alecto_regions = [ - RegionData(Region.witch_hut, [AlectoEntrance.witch_hut_to_witch_attic]), - RegionData(AlectoRegion.witch_attic) + RegionData(Region.witch_hut, (AlectoEntrance.witch_hut_to_witch_attic,)), + RegionData(AlectoRegion.witch_attic), ] alecto_entrances = [ - ConnectionData(AlectoEntrance.witch_hut_to_witch_attic, AlectoRegion.witch_attic, flag=RandomizationFlag.BUILDINGS) + ConnectionData(AlectoEntrance.witch_hut_to_witch_attic, AlectoRegion.witch_attic, flag=RandomizationFlag.BUILDINGS), ] lacey_regions = [ - RegionData(Region.forest, [LaceyEntrance.forest_to_hat_house]), - RegionData(LaceyRegion.hat_house) + RegionData(Region.forest, (LaceyEntrance.forest_to_hat_house,)), + RegionData(LaceyRegion.hat_house), ] lacey_entrances = [ - ConnectionData(LaceyEntrance.forest_to_hat_house, LaceyRegion.hat_house, flag=RandomizationFlag.BUILDINGS) + ConnectionData(LaceyEntrance.forest_to_hat_house, LaceyRegion.hat_house, flag=RandomizationFlag.BUILDINGS), ] boarding_house_regions = [ - RegionData(Region.bus_stop, [BoardingHouseEntrance.bus_stop_to_boarding_house_plateau]), - RegionData(BoardingHouseRegion.boarding_house_plateau, [BoardingHouseEntrance.boarding_house_plateau_to_boarding_house_first, + RegionData(Region.bus_stop, (BoardingHouseEntrance.bus_stop_to_boarding_house_plateau,)), + RegionData(BoardingHouseRegion.boarding_house_plateau, (BoardingHouseEntrance.boarding_house_plateau_to_boarding_house_first, BoardingHouseEntrance.boarding_house_plateau_to_buffalo_ranch, - BoardingHouseEntrance.boarding_house_plateau_to_abandoned_mines_entrance]), - RegionData(BoardingHouseRegion.boarding_house_first, [BoardingHouseEntrance.boarding_house_first_to_boarding_house_second]), + BoardingHouseEntrance.boarding_house_plateau_to_abandoned_mines_entrance)), + RegionData(BoardingHouseRegion.boarding_house_first, (BoardingHouseEntrance.boarding_house_first_to_boarding_house_second,)), RegionData(BoardingHouseRegion.boarding_house_second), RegionData(BoardingHouseRegion.buffalo_ranch), - RegionData(BoardingHouseRegion.abandoned_mines_entrance, [BoardingHouseEntrance.abandoned_mines_entrance_to_abandoned_mines_1a, - BoardingHouseEntrance.abandoned_mines_entrance_to_the_lost_valley]), - RegionData(BoardingHouseRegion.abandoned_mines_1a, [BoardingHouseEntrance.abandoned_mines_1a_to_abandoned_mines_1b]), - RegionData(BoardingHouseRegion.abandoned_mines_1b, [BoardingHouseEntrance.abandoned_mines_1b_to_abandoned_mines_2a]), - RegionData(BoardingHouseRegion.abandoned_mines_2a, [BoardingHouseEntrance.abandoned_mines_2a_to_abandoned_mines_2b]), - RegionData(BoardingHouseRegion.abandoned_mines_2b, [BoardingHouseEntrance.abandoned_mines_2b_to_abandoned_mines_3]), - RegionData(BoardingHouseRegion.abandoned_mines_3, [BoardingHouseEntrance.abandoned_mines_3_to_abandoned_mines_4]), - RegionData(BoardingHouseRegion.abandoned_mines_4, [BoardingHouseEntrance.abandoned_mines_4_to_abandoned_mines_5]), - RegionData(BoardingHouseRegion.abandoned_mines_5, [BoardingHouseEntrance.abandoned_mines_5_to_the_lost_valley]), - RegionData(BoardingHouseRegion.the_lost_valley, [BoardingHouseEntrance.the_lost_valley_to_gregory_tent, + RegionData(BoardingHouseRegion.abandoned_mines_entrance, (BoardingHouseEntrance.abandoned_mines_entrance_to_abandoned_mines_1a, + BoardingHouseEntrance.abandoned_mines_entrance_to_the_lost_valley)), + RegionData(BoardingHouseRegion.abandoned_mines_1a, (BoardingHouseEntrance.abandoned_mines_1a_to_abandoned_mines_1b,)), + RegionData(BoardingHouseRegion.abandoned_mines_1b, (BoardingHouseEntrance.abandoned_mines_1b_to_abandoned_mines_2a,)), + RegionData(BoardingHouseRegion.abandoned_mines_2a, (BoardingHouseEntrance.abandoned_mines_2a_to_abandoned_mines_2b,)), + RegionData(BoardingHouseRegion.abandoned_mines_2b, (BoardingHouseEntrance.abandoned_mines_2b_to_abandoned_mines_3,)), + RegionData(BoardingHouseRegion.abandoned_mines_3, (BoardingHouseEntrance.abandoned_mines_3_to_abandoned_mines_4,)), + RegionData(BoardingHouseRegion.abandoned_mines_4, (BoardingHouseEntrance.abandoned_mines_4_to_abandoned_mines_5,)), + RegionData(BoardingHouseRegion.abandoned_mines_5, (BoardingHouseEntrance.abandoned_mines_5_to_the_lost_valley,)), + RegionData(BoardingHouseRegion.the_lost_valley, (BoardingHouseEntrance.the_lost_valley_to_gregory_tent, BoardingHouseEntrance.lost_valley_to_lost_valley_minecart, - BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins]), + BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins)), RegionData(BoardingHouseRegion.gregory_tent), - RegionData(BoardingHouseRegion.lost_valley_ruins, [BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, - BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2]), + RegionData(BoardingHouseRegion.lost_valley_ruins, (BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, + BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2)), RegionData(BoardingHouseRegion.lost_valley_minecart), RegionData(BoardingHouseRegion.lost_valley_house_1), - RegionData(BoardingHouseRegion.lost_valley_house_2) + RegionData(BoardingHouseRegion.lost_valley_house_2), ] boarding_house_entrances = [ @@ -351,30 +352,29 @@ ConnectionData(BoardingHouseEntrance.lost_valley_to_lost_valley_minecart, BoardingHouseRegion.lost_valley_minecart), ConnectionData(BoardingHouseEntrance.the_lost_valley_to_lost_valley_ruins, BoardingHouseRegion.lost_valley_ruins, flag=RandomizationFlag.BUILDINGS), ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_1, BoardingHouseRegion.lost_valley_house_1, flag=RandomizationFlag.BUILDINGS), - ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2, BoardingHouseRegion.lost_valley_house_2, flag=RandomizationFlag.BUILDINGS) + ConnectionData(BoardingHouseEntrance.lost_valley_ruins_to_lost_valley_house_2, BoardingHouseRegion.lost_valley_house_2, flag=RandomizationFlag.BUILDINGS), ] -vanilla_connections_to_remove_by_mod: Dict[str, List[ConnectionData]] = { - ModNames.sve: [ - ConnectionData(Entrance.mountain_to_the_mines, Region.mines, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_adventurer_guild, Region.adventurer_guild, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ] +vanilla_connections_to_remove_by_content_pack: dict[str, tuple[str, ...]] = { + ModNames.sve: ( + Entrance.mountain_to_the_mines, + Entrance.mountain_to_adventurer_guild, + ) } -ModDataList = { - ModNames.deepwoods: ModRegionData(ModNames.deepwoods, deep_woods_regions, deep_woods_entrances), - ModNames.eugene: ModRegionData(ModNames.eugene, eugene_regions, eugene_entrances), - ModNames.jasper: ModRegionData(ModNames.jasper, jasper_regions, jasper_entrances), - ModNames.alec: ModRegionData(ModNames.alec, alec_regions, alec_entrances), - ModNames.yoba: ModRegionData(ModNames.yoba, yoba_regions, yoba_entrances), - ModNames.juna: ModRegionData(ModNames.juna, juna_regions, juna_entrances), - ModNames.magic: ModRegionData(ModNames.magic, magic_regions, magic_entrances), - ModNames.ayeisha: ModRegionData(ModNames.ayeisha, ayeisha_regions, ayeisha_entrances), - ModNames.riley: ModRegionData(ModNames.riley, riley_regions, riley_entrances), - ModNames.sve: ModRegionData(ModNames.sve, stardew_valley_expanded_regions, mandatory_sve_connections), - ModNames.alecto: ModRegionData(ModNames.alecto, alecto_regions, alecto_entrances), - ModNames.lacey: ModRegionData(ModNames.lacey, lacey_regions, lacey_entrances), - ModNames.boarding_house: ModRegionData(ModNames.boarding_house, boarding_house_regions, boarding_house_entrances), +region_data_by_content_pack = { + ModNames.deepwoods: ModRegionsData(ModNames.deepwoods, deep_woods_regions, deep_woods_entrances), + ModNames.eugene: ModRegionsData(ModNames.eugene, eugene_regions, eugene_entrances), + ModNames.jasper: ModRegionsData(ModNames.jasper, jasper_regions, jasper_entrances), + ModNames.alec: ModRegionsData(ModNames.alec, alec_regions, alec_entrances), + ModNames.yoba: ModRegionsData(ModNames.yoba, yoba_regions, yoba_entrances), + ModNames.juna: ModRegionsData(ModNames.juna, juna_regions, juna_entrances), + ModNames.magic: ModRegionsData(ModNames.magic, magic_regions, magic_entrances), + ModNames.ayeisha: ModRegionsData(ModNames.ayeisha, ayeisha_regions, ayeisha_entrances), + ModNames.riley: ModRegionsData(ModNames.riley, riley_regions, riley_entrances), + ModNames.sve: ModRegionsData(ModNames.sve, sve_main_land_regions, sve_main_land_connections), + SVE_GINGER_ISLAND_PACK: ModRegionsData(SVE_GINGER_ISLAND_PACK, sve_ginger_island_regions, sve_ginger_island_connections), + ModNames.alecto: ModRegionsData(ModNames.alecto, alecto_regions, alecto_entrances), + ModNames.lacey: ModRegionsData(ModNames.lacey, lacey_regions, lacey_entrances), + ModNames.boarding_house: ModRegionsData(ModNames.boarding_house, boarding_house_regions, boarding_house_entrances), } diff --git a/worlds/stardew_valley/options/__init__.py b/worlds/stardew_valley/options/__init__.py index 713d3e9537a6..12c0d7c647ff 100644 --- a/worlds/stardew_valley/options/__init__.py +++ b/worlds/stardew_valley/options/__init__.py @@ -1,6 +1,6 @@ from .options import StardewValleyOption, Goal, FarmType, StartingMoney, ProfitMargin, BundleRandomization, BundlePrice, EntranceRandomization, \ SeasonRandomization, Cropsanity, BackpackProgression, ToolProgression, ElevatorProgression, SkillProgression, BuildingProgression, FestivalLocations, \ ArcadeMachineLocations, SpecialOrderLocations, QuestLocations, Fishsanity, Museumsanity, Monstersanity, Shipsanity, Cooksanity, Chefsanity, Craftsanity, \ - Friendsanity, FriendsanityHeartSize, Booksanity, Walnutsanity, NumberOfMovementBuffs, EnabledFillerBuffs, ExcludeGingerIsland, TrapItems, \ + Friendsanity, FriendsanityHeartSize, Booksanity, Walnutsanity, NumberOfMovementBuffs, EnabledFillerBuffs, ExcludeGingerIsland, TrapDifficulty, \ MultipleDaySleepEnabled, MultipleDaySleepCost, ExperienceMultiplier, FriendshipMultiplier, DebrisMultiplier, QuickStart, Gifting, Mods, BundlePlando, \ - StardewValleyOptions, enabled_mods, disabled_mods, all_mods + StardewValleyOptions, enabled_mods, disabled_mods, all_mods, TrapDistribution, TrapItems, StardewValleyOptions diff --git a/worlds/stardew_valley/options/option_groups.py b/worlds/stardew_valley/options/option_groups.py index bcb9bee77ff4..4ae1fc3c4d7e 100644 --- a/worlds/stardew_valley/options/option_groups.py +++ b/worlds/stardew_valley/options/option_groups.py @@ -52,7 +52,8 @@ options.DebrisMultiplier, options.NumberOfMovementBuffs, options.EnabledFillerBuffs, - options.TrapItems, + options.TrapDifficulty, + options.TrapDistribution, options.MultipleDaySleepEnabled, options.MultipleDaySleepCost, options.QuickStart, diff --git a/worlds/stardew_valley/options/options.py b/worlds/stardew_valley/options/options.py index 84026387c57f..f81cdaac813b 100644 --- a/worlds/stardew_valley/options/options.py +++ b/worlds/stardew_valley/options/options.py @@ -3,7 +3,8 @@ from dataclasses import dataclass from typing import Protocol, ClassVar -from Options import Range, NamedRange, Toggle, Choice, OptionSet, PerGameCommonOptions, DeathLink, OptionList, Visibility +from Options import Range, NamedRange, Toggle, Choice, OptionSet, PerGameCommonOptions, DeathLink, OptionList, Visibility, Removed, OptionCounter +from ..items import items_by_group, Group from ..mods.mod_data import ModNames from ..strings.ap_names.ap_option_names import BuffOptionName, WalnutsanityOptionName from ..strings.bundle_names import all_cc_bundle_names @@ -658,13 +659,29 @@ class ExcludeGingerIsland(Toggle): default = 0 -class TrapItems(Choice): - """When rolling filler items, including resource packs, the game can also roll trap items. - Trap items are negative items that cause problems or annoyances for the player - This setting is for choosing if traps will be in the item pool, and if so, how punishing they will be. +class TrapItems(Removed): + """Deprecated setting, replaced by TrapDifficulty """ internal_name = "trap_items" display_name = "Trap Items" + default = "" + visibility = Visibility.none + + def __init__(self, value: str): + if value: + raise Exception("Option trap_items was replaced by trap_difficulty, please update your options file") + super().__init__(value) + + +class TrapDifficulty(Choice): + """When rolling filler items, including resource packs, the game can also roll trap items. + Trap items are negative items that cause problems or annoyances for the player. + This setting is for choosing how punishing traps will be. + Lower difficulties will be on the funny annoyance side, higher difficulty will be on the extreme problems side. + Only play Nightmare at your own risk. + """ + internal_name = "trap_difficulty" + display_name = "Trap Difficulty" default = 2 option_no_traps = 0 option_easy = 1 @@ -674,6 +691,34 @@ class TrapItems(Choice): option_nightmare = 5 +trap_default_weight = 100 + + +class TrapDistribution(OptionCounter): + """ + Specify the weighted chance of rolling individual traps when rolling random filler items. + The average filler item should be considered to be "100", as in 100%. + So a trap on "200" will be twice as likely to roll as any filler item. A trap on "10" will be 10% as likely. + You can use weight "0" to disable this trap entirely. The maximum weight is 1000, for x10 chance + """ + internal_name = "trap_distribution" + display_name = "Trap Distribution" + default_weight = trap_default_weight + visibility = Visibility.all ^ Visibility.simple_ui + min = 0 + max = 1000 + valid_keys = frozenset({ + trap_data.name + for trap_data in items_by_group[Group.TRAP] + if Group.DEPRECATED not in trap_data.groups + }) + default = { + trap_data.name: trap_default_weight + for trap_data in items_by_group[Group.TRAP] + if Group.DEPRECATED not in trap_data.groups + } + + class MultipleDaySleepEnabled(Toggle): """Enable the ability to sleep automatically for multiple days straight?""" internal_name = "multiple_day_sleep_enabled" @@ -851,10 +896,14 @@ class StardewValleyOptions(PerGameCommonOptions): debris_multiplier: DebrisMultiplier movement_buff_number: NumberOfMovementBuffs enabled_filler_buffs: EnabledFillerBuffs - trap_items: TrapItems + trap_difficulty: TrapDifficulty + trap_distribution: TrapDistribution multiple_day_sleep_enabled: MultipleDaySleepEnabled multiple_day_sleep_cost: MultipleDaySleepCost gifting: Gifting mods: Mods bundle_plando: BundlePlando death_link: DeathLink + + # removed: + trap_items: TrapItems \ No newline at end of file diff --git a/worlds/stardew_valley/options/presets.py b/worlds/stardew_valley/options/presets.py index 3dbb5ab3f554..a711fe08ff86 100644 --- a/worlds/stardew_valley/options/presets.py +++ b/worlds/stardew_valley/options/presets.py @@ -38,7 +38,7 @@ options.Booksanity.internal_name: "random", options.NumberOfMovementBuffs.internal_name: "random", options.ExcludeGingerIsland.internal_name: "random", - options.TrapItems.internal_name: "random", + options.TrapDifficulty.internal_name: "random", options.MultipleDaySleepEnabled.internal_name: "random", options.MultipleDaySleepCost.internal_name: "random", options.ExperienceMultiplier.internal_name: "random", @@ -82,7 +82,7 @@ options.NumberOfMovementBuffs.internal_name: 8, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_easy, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_easy, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "triple", @@ -126,7 +126,7 @@ options.NumberOfMovementBuffs.internal_name: 6, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_medium, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "double", @@ -170,7 +170,7 @@ options.NumberOfMovementBuffs.internal_name: 4, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.default, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_hard, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_hard, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "cheap", options.ExperienceMultiplier.internal_name: "vanilla", @@ -214,7 +214,7 @@ options.NumberOfMovementBuffs.internal_name: 2, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_none, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_hell, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_hell, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "expensive", options.ExperienceMultiplier.internal_name: "half", @@ -258,7 +258,7 @@ options.NumberOfMovementBuffs.internal_name: 10, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_easy, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_easy, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.option_true, options.MultipleDaySleepCost.internal_name: "free", options.ExperienceMultiplier.internal_name: "quadruple", @@ -302,7 +302,7 @@ options.NumberOfMovementBuffs.internal_name: options.NumberOfMovementBuffs.default, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.default, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.default, + options.TrapDifficulty.internal_name: options.TrapDifficulty.default, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.default, options.MultipleDaySleepCost.internal_name: options.MultipleDaySleepCost.default, options.ExperienceMultiplier.internal_name: options.ExperienceMultiplier.default, @@ -346,7 +346,7 @@ options.NumberOfMovementBuffs.internal_name: 12, options.EnabledFillerBuffs.internal_name: options.EnabledFillerBuffs.preset_all, options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.default, + options.TrapDifficulty.internal_name: options.TrapDifficulty.default, options.MultipleDaySleepEnabled.internal_name: options.MultipleDaySleepEnabled.default, options.MultipleDaySleepCost.internal_name: options.MultipleDaySleepCost.default, options.ExperienceMultiplier.internal_name: options.ExperienceMultiplier.default, diff --git a/worlds/stardew_valley/region_classes.py b/worlds/stardew_valley/region_classes.py deleted file mode 100644 index d3d16e3878bb..000000000000 --- a/worlds/stardew_valley/region_classes.py +++ /dev/null @@ -1,67 +0,0 @@ -from copy import deepcopy -from dataclasses import dataclass, field -from enum import IntFlag -from typing import Optional, List, Set - -connector_keyword = " to " - - -class ModificationFlag(IntFlag): - NOT_MODIFIED = 0 - MODIFIED = 1 - - -class RandomizationFlag(IntFlag): - NOT_RANDOMIZED = 0b0 - PELICAN_TOWN = 0b00011111 - NON_PROGRESSION = 0b00011110 - BUILDINGS = 0b00011100 - EVERYTHING = 0b00011000 - GINGER_ISLAND = 0b00100000 - LEAD_TO_OPEN_AREA = 0b01000000 - MASTERIES = 0b10000000 - - -@dataclass(frozen=True) -class RegionData: - name: str - exits: List[str] = field(default_factory=list) - flag: ModificationFlag = ModificationFlag.NOT_MODIFIED - is_ginger_island: bool = False - - def get_merged_with(self, exits: List[str]): - merged_exits = [] - merged_exits.extend(self.exits) - if exits is not None: - merged_exits.extend(exits) - merged_exits = sorted(set(merged_exits)) - return RegionData(self.name, merged_exits, is_ginger_island=self.is_ginger_island) - - def get_without_exits(self, exits_to_remove: Set[str]): - exits = [exit_ for exit_ in self.exits if exit_ not in exits_to_remove] - return RegionData(self.name, exits, is_ginger_island=self.is_ginger_island) - - def get_clone(self): - return deepcopy(self) - - -@dataclass(frozen=True) -class ConnectionData: - name: str - destination: str - origin: Optional[str] = None - reverse: Optional[str] = None - flag: RandomizationFlag = RandomizationFlag.NOT_RANDOMIZED - - def __post_init__(self): - if connector_keyword in self.name: - origin, destination = self.name.split(connector_keyword) - if self.reverse is None: - super().__setattr__("reverse", f"{destination}{connector_keyword}{origin}") - - -@dataclass(frozen=True) -class ModRegionData: - mod_name: str - regions: List[RegionData] - connections: List[ConnectionData] diff --git a/worlds/stardew_valley/regions.py b/worlds/stardew_valley/regions.py deleted file mode 100644 index d5be53ba866c..000000000000 --- a/worlds/stardew_valley/regions.py +++ /dev/null @@ -1,774 +0,0 @@ -from random import Random -from typing import Iterable, Dict, Protocol, List, Tuple, Set - -from BaseClasses import Region, Entrance -from .content import content_packs, StardewContent -from .mods.mod_regions import ModDataList, vanilla_connections_to_remove_by_mod -from .options import EntranceRandomization, ExcludeGingerIsland, StardewValleyOptions -from .region_classes import RegionData, ConnectionData, RandomizationFlag, ModificationFlag -from .strings.entrance_names import Entrance, LogicEntrance -from .strings.region_names import Region as RegionName, LogicRegion - - -class RegionFactory(Protocol): - def __call__(self, name: str, regions: Iterable[str]) -> Region: - raise NotImplementedError - - -vanilla_regions = [ - RegionData(RegionName.menu, [Entrance.to_stardew_valley]), - RegionData(RegionName.stardew_valley, [Entrance.to_farmhouse]), - RegionData(RegionName.farm_house, - [Entrance.farmhouse_to_farm, Entrance.downstairs_to_cellar, LogicEntrance.farmhouse_cooking, LogicEntrance.watch_queen_of_sauce]), - RegionData(RegionName.cellar), - RegionData(RegionName.farm, - [Entrance.farm_to_backwoods, Entrance.farm_to_bus_stop, Entrance.farm_to_forest, Entrance.farm_to_farmcave, Entrance.enter_greenhouse, - Entrance.enter_coop, Entrance.enter_barn, Entrance.enter_shed, Entrance.enter_slime_hutch, LogicEntrance.grow_spring_crops, - LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping]), - RegionData(RegionName.backwoods, [Entrance.backwoods_to_mountain]), - RegionData(RegionName.bus_stop, - [Entrance.bus_stop_to_town, Entrance.take_bus_to_desert, Entrance.bus_stop_to_tunnel_entrance]), - RegionData(RegionName.forest, - [Entrance.forest_to_town, Entrance.enter_secret_woods, Entrance.forest_to_wizard_tower, Entrance.forest_to_marnie_ranch, - Entrance.forest_to_leah_cottage, Entrance.forest_to_sewer, Entrance.forest_to_mastery_cave, LogicEntrance.buy_from_traveling_merchant, - LogicEntrance.complete_raccoon_requests, LogicEntrance.fish_in_waterfall, LogicEntrance.attend_flower_dance, LogicEntrance.attend_trout_derby, - LogicEntrance.attend_festival_of_ice]), - RegionData(LogicRegion.forest_waterfall), - RegionData(RegionName.farm_cave), - RegionData(RegionName.greenhouse, - [LogicEntrance.grow_spring_crops_in_greenhouse, LogicEntrance.grow_summer_crops_in_greenhouse, LogicEntrance.grow_fall_crops_in_greenhouse, - LogicEntrance.grow_winter_crops_in_greenhouse, LogicEntrance.grow_indoor_crops_in_greenhouse]), - RegionData(RegionName.mountain, - [Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, - Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, - Entrance.mountain_to_town, Entrance.mountain_to_maru_room, - Entrance.mountain_to_leo_treehouse]), - RegionData(RegionName.leo_treehouse, is_ginger_island=True), - RegionData(RegionName.maru_room), - RegionData(RegionName.tunnel_entrance, [Entrance.tunnel_entrance_to_bus_tunnel]), - RegionData(RegionName.bus_tunnel), - RegionData(RegionName.town, - [Entrance.town_to_community_center, Entrance.town_to_beach, Entrance.town_to_hospital, Entrance.town_to_pierre_general_store, - Entrance.town_to_saloon, Entrance.town_to_alex_house, Entrance.town_to_trailer, Entrance.town_to_mayor_manor, Entrance.town_to_sam_house, - Entrance.town_to_haley_house, Entrance.town_to_sewer, Entrance.town_to_clint_blacksmith, Entrance.town_to_museum, Entrance.town_to_jojamart, - Entrance.purchase_movie_ticket, LogicEntrance.buy_experience_books, LogicEntrance.attend_egg_festival, LogicEntrance.attend_fair, - LogicEntrance.attend_spirit_eve, LogicEntrance.attend_winter_star]), - RegionData(RegionName.beach, - [Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.fishing, LogicEntrance.attend_luau, - LogicEntrance.attend_moonlight_jellies, LogicEntrance.attend_night_market, LogicEntrance.attend_squidfest]), - RegionData(RegionName.railroad, [Entrance.enter_bathhouse_entrance, Entrance.enter_witch_warp_cave]), - RegionData(RegionName.ranch), - RegionData(RegionName.leah_house), - RegionData(RegionName.mastery_cave), - RegionData(RegionName.sewer, [Entrance.enter_mutant_bug_lair]), - RegionData(RegionName.mutant_bug_lair), - RegionData(RegionName.wizard_tower, [Entrance.enter_wizard_basement, Entrance.use_desert_obelisk, Entrance.use_island_obelisk]), - RegionData(RegionName.wizard_basement), - RegionData(RegionName.tent), - RegionData(RegionName.carpenter, [Entrance.enter_sebastian_room]), - RegionData(RegionName.sebastian_room), - RegionData(RegionName.adventurer_guild, [Entrance.adventurer_guild_to_bedroom]), - RegionData(RegionName.adventurer_guild_bedroom), - RegionData(RegionName.community_center, - [Entrance.access_crafts_room, Entrance.access_pantry, Entrance.access_fish_tank, - Entrance.access_boiler_room, Entrance.access_bulletin_board, Entrance.access_vault]), - RegionData(RegionName.crafts_room), - RegionData(RegionName.pantry), - RegionData(RegionName.fish_tank), - RegionData(RegionName.boiler_room), - RegionData(RegionName.bulletin_board), - RegionData(RegionName.vault), - RegionData(RegionName.hospital, [Entrance.enter_harvey_room]), - RegionData(RegionName.harvey_room), - RegionData(RegionName.pierre_store, [Entrance.enter_sunroom]), - RegionData(RegionName.sunroom), - RegionData(RegionName.saloon, [Entrance.play_journey_of_the_prairie_king, Entrance.play_junimo_kart]), - RegionData(RegionName.jotpk_world_1, [Entrance.reach_jotpk_world_2]), - RegionData(RegionName.jotpk_world_2, [Entrance.reach_jotpk_world_3]), - RegionData(RegionName.jotpk_world_3), - RegionData(RegionName.junimo_kart_1, [Entrance.reach_junimo_kart_2]), - RegionData(RegionName.junimo_kart_2, [Entrance.reach_junimo_kart_3]), - RegionData(RegionName.junimo_kart_3, [Entrance.reach_junimo_kart_4]), - RegionData(RegionName.junimo_kart_4), - RegionData(RegionName.alex_house), - RegionData(RegionName.trailer), - RegionData(RegionName.mayor_house), - RegionData(RegionName.sam_house), - RegionData(RegionName.haley_house), - RegionData(RegionName.blacksmith, [LogicEntrance.blacksmith_copper]), - RegionData(RegionName.museum), - RegionData(RegionName.jojamart, [Entrance.enter_abandoned_jojamart]), - RegionData(RegionName.abandoned_jojamart, [Entrance.enter_movie_theater]), - RegionData(RegionName.movie_ticket_stand), - RegionData(RegionName.movie_theater), - RegionData(RegionName.fish_shop, [Entrance.fish_shop_to_boat_tunnel]), - RegionData(RegionName.boat_tunnel, [Entrance.boat_to_ginger_island], is_ginger_island=True), - RegionData(RegionName.elliott_house), - RegionData(RegionName.tide_pools), - RegionData(RegionName.bathhouse_entrance, [Entrance.enter_locker_room]), - RegionData(RegionName.locker_room, [Entrance.enter_public_bath]), - RegionData(RegionName.public_bath), - RegionData(RegionName.witch_warp_cave, [Entrance.enter_witch_swamp]), - RegionData(RegionName.witch_swamp, [Entrance.enter_witch_hut]), - RegionData(RegionName.witch_hut, [Entrance.witch_warp_to_wizard_basement]), - RegionData(RegionName.quarry, [Entrance.enter_quarry_mine_entrance]), - RegionData(RegionName.quarry_mine_entrance, [Entrance.enter_quarry_mine]), - RegionData(RegionName.quarry_mine), - RegionData(RegionName.secret_woods), - RegionData(RegionName.desert, [Entrance.enter_skull_cavern_entrance, Entrance.enter_oasis, LogicEntrance.attend_desert_festival]), - RegionData(RegionName.oasis, [Entrance.enter_casino]), - RegionData(RegionName.casino), - RegionData(RegionName.skull_cavern_entrance, [Entrance.enter_skull_cavern]), - RegionData(RegionName.skull_cavern, [Entrance.mine_to_skull_cavern_floor_25]), - RegionData(RegionName.skull_cavern_25, [Entrance.mine_to_skull_cavern_floor_50]), - RegionData(RegionName.skull_cavern_50, [Entrance.mine_to_skull_cavern_floor_75]), - RegionData(RegionName.skull_cavern_75, [Entrance.mine_to_skull_cavern_floor_100]), - RegionData(RegionName.skull_cavern_100, [Entrance.mine_to_skull_cavern_floor_125]), - RegionData(RegionName.skull_cavern_125, [Entrance.mine_to_skull_cavern_floor_150]), - RegionData(RegionName.skull_cavern_150, [Entrance.mine_to_skull_cavern_floor_175]), - RegionData(RegionName.skull_cavern_175, [Entrance.mine_to_skull_cavern_floor_200]), - RegionData(RegionName.skull_cavern_200, [Entrance.enter_dangerous_skull_cavern]), - RegionData(RegionName.dangerous_skull_cavern, is_ginger_island=True), - RegionData(RegionName.island_south, - [Entrance.island_south_to_west, Entrance.island_south_to_north, Entrance.island_south_to_east, Entrance.island_south_to_southeast, - Entrance.use_island_resort, Entrance.parrot_express_docks_to_volcano, Entrance.parrot_express_docks_to_dig_site, - Entrance.parrot_express_docks_to_jungle], - is_ginger_island=True), - RegionData(RegionName.island_resort, is_ginger_island=True), - RegionData(RegionName.island_west, - [Entrance.island_west_to_islandfarmhouse, Entrance.island_west_to_gourmand_cave, Entrance.island_west_to_crystals_cave, - Entrance.island_west_to_shipwreck, Entrance.island_west_to_qi_walnut_room, Entrance.use_farm_obelisk, Entrance.parrot_express_jungle_to_docks, - Entrance.parrot_express_jungle_to_dig_site, Entrance.parrot_express_jungle_to_volcano, LogicEntrance.grow_spring_crops_on_island, - LogicEntrance.grow_summer_crops_on_island, LogicEntrance.grow_fall_crops_on_island, LogicEntrance.grow_winter_crops_on_island, - LogicEntrance.grow_indoor_crops_on_island], - is_ginger_island=True), - RegionData(RegionName.island_east, [Entrance.island_east_to_leo_hut, Entrance.island_east_to_island_shrine], is_ginger_island=True), - RegionData(RegionName.island_shrine, is_ginger_island=True), - RegionData(RegionName.island_south_east, [Entrance.island_southeast_to_pirate_cove], is_ginger_island=True), - RegionData(RegionName.island_north, - [Entrance.talk_to_island_trader, Entrance.island_north_to_field_office, Entrance.island_north_to_dig_site, Entrance.island_north_to_volcano, - Entrance.parrot_express_volcano_to_dig_site, Entrance.parrot_express_volcano_to_jungle, Entrance.parrot_express_volcano_to_docks], - is_ginger_island=True), - RegionData(RegionName.volcano, [Entrance.climb_to_volcano_5, Entrance.volcano_to_secret_beach], is_ginger_island=True), - RegionData(RegionName.volcano_secret_beach, is_ginger_island=True), - RegionData(RegionName.volcano_floor_5, [Entrance.talk_to_volcano_dwarf, Entrance.climb_to_volcano_10], is_ginger_island=True), - RegionData(RegionName.volcano_dwarf_shop, is_ginger_island=True), - RegionData(RegionName.volcano_floor_10, is_ginger_island=True), - RegionData(RegionName.island_trader, is_ginger_island=True), - RegionData(RegionName.island_farmhouse, [LogicEntrance.island_cooking], is_ginger_island=True), - RegionData(RegionName.gourmand_frog_cave, is_ginger_island=True), - RegionData(RegionName.colored_crystals_cave, is_ginger_island=True), - RegionData(RegionName.shipwreck, is_ginger_island=True), - RegionData(RegionName.qi_walnut_room, is_ginger_island=True), - RegionData(RegionName.leo_hut, is_ginger_island=True), - RegionData(RegionName.pirate_cove, is_ginger_island=True), - RegionData(RegionName.field_office, is_ginger_island=True), - RegionData(RegionName.dig_site, - [Entrance.dig_site_to_professor_snail_cave, Entrance.parrot_express_dig_site_to_volcano, - Entrance.parrot_express_dig_site_to_docks, Entrance.parrot_express_dig_site_to_jungle], - is_ginger_island=True), - RegionData(RegionName.professor_snail_cave, is_ginger_island=True), - RegionData(RegionName.coop), - RegionData(RegionName.barn), - RegionData(RegionName.shed), - RegionData(RegionName.slime_hutch), - - RegionData(RegionName.mines, [LogicEntrance.talk_to_mines_dwarf, - Entrance.dig_to_mines_floor_5]), - RegionData(RegionName.mines_floor_5, [Entrance.dig_to_mines_floor_10]), - RegionData(RegionName.mines_floor_10, [Entrance.dig_to_mines_floor_15]), - RegionData(RegionName.mines_floor_15, [Entrance.dig_to_mines_floor_20]), - RegionData(RegionName.mines_floor_20, [Entrance.dig_to_mines_floor_25]), - RegionData(RegionName.mines_floor_25, [Entrance.dig_to_mines_floor_30]), - RegionData(RegionName.mines_floor_30, [Entrance.dig_to_mines_floor_35]), - RegionData(RegionName.mines_floor_35, [Entrance.dig_to_mines_floor_40]), - RegionData(RegionName.mines_floor_40, [Entrance.dig_to_mines_floor_45]), - RegionData(RegionName.mines_floor_45, [Entrance.dig_to_mines_floor_50]), - RegionData(RegionName.mines_floor_50, [Entrance.dig_to_mines_floor_55]), - RegionData(RegionName.mines_floor_55, [Entrance.dig_to_mines_floor_60]), - RegionData(RegionName.mines_floor_60, [Entrance.dig_to_mines_floor_65]), - RegionData(RegionName.mines_floor_65, [Entrance.dig_to_mines_floor_70]), - RegionData(RegionName.mines_floor_70, [Entrance.dig_to_mines_floor_75]), - RegionData(RegionName.mines_floor_75, [Entrance.dig_to_mines_floor_80]), - RegionData(RegionName.mines_floor_80, [Entrance.dig_to_mines_floor_85]), - RegionData(RegionName.mines_floor_85, [Entrance.dig_to_mines_floor_90]), - RegionData(RegionName.mines_floor_90, [Entrance.dig_to_mines_floor_95]), - RegionData(RegionName.mines_floor_95, [Entrance.dig_to_mines_floor_100]), - RegionData(RegionName.mines_floor_100, [Entrance.dig_to_mines_floor_105]), - RegionData(RegionName.mines_floor_105, [Entrance.dig_to_mines_floor_110]), - RegionData(RegionName.mines_floor_110, [Entrance.dig_to_mines_floor_115]), - RegionData(RegionName.mines_floor_115, [Entrance.dig_to_mines_floor_120]), - RegionData(RegionName.mines_floor_120, [Entrance.dig_to_dangerous_mines_20, Entrance.dig_to_dangerous_mines_60, Entrance.dig_to_dangerous_mines_100]), - RegionData(RegionName.dangerous_mines_20, is_ginger_island=True), - RegionData(RegionName.dangerous_mines_60, is_ginger_island=True), - RegionData(RegionName.dangerous_mines_100, is_ginger_island=True), - - RegionData(LogicRegion.mines_dwarf_shop), - RegionData(LogicRegion.blacksmith_copper, [LogicEntrance.blacksmith_iron]), - RegionData(LogicRegion.blacksmith_iron, [LogicEntrance.blacksmith_gold]), - RegionData(LogicRegion.blacksmith_gold, [LogicEntrance.blacksmith_iridium]), - RegionData(LogicRegion.blacksmith_iridium), - RegionData(LogicRegion.kitchen), - RegionData(LogicRegion.queen_of_sauce), - RegionData(LogicRegion.fishing), - - RegionData(LogicRegion.spring_farming), - RegionData(LogicRegion.summer_farming, [LogicEntrance.grow_summer_fall_crops_in_summer]), - RegionData(LogicRegion.fall_farming, [LogicEntrance.grow_summer_fall_crops_in_fall]), - RegionData(LogicRegion.winter_farming), - RegionData(LogicRegion.summer_or_fall_farming), - RegionData(LogicRegion.indoor_farming), - - RegionData(LogicRegion.shipping), - RegionData(LogicRegion.traveling_cart, [LogicEntrance.buy_from_traveling_merchant_sunday, - LogicEntrance.buy_from_traveling_merchant_monday, - LogicEntrance.buy_from_traveling_merchant_tuesday, - LogicEntrance.buy_from_traveling_merchant_wednesday, - LogicEntrance.buy_from_traveling_merchant_thursday, - LogicEntrance.buy_from_traveling_merchant_friday, - LogicEntrance.buy_from_traveling_merchant_saturday]), - RegionData(LogicRegion.traveling_cart_sunday), - RegionData(LogicRegion.traveling_cart_monday), - RegionData(LogicRegion.traveling_cart_tuesday), - RegionData(LogicRegion.traveling_cart_wednesday), - RegionData(LogicRegion.traveling_cart_thursday), - RegionData(LogicRegion.traveling_cart_friday), - RegionData(LogicRegion.traveling_cart_saturday), - RegionData(LogicRegion.raccoon_daddy, [LogicEntrance.buy_from_raccoon]), - RegionData(LogicRegion.raccoon_shop), - - RegionData(LogicRegion.egg_festival), - RegionData(LogicRegion.desert_festival), - RegionData(LogicRegion.flower_dance), - RegionData(LogicRegion.luau), - RegionData(LogicRegion.trout_derby), - RegionData(LogicRegion.moonlight_jellies), - RegionData(LogicRegion.fair), - RegionData(LogicRegion.spirit_eve), - RegionData(LogicRegion.festival_of_ice), - RegionData(LogicRegion.night_market), - RegionData(LogicRegion.winter_star), - RegionData(LogicRegion.squidfest), - RegionData(LogicRegion.bookseller_1, [LogicEntrance.buy_year1_books]), - RegionData(LogicRegion.bookseller_2, [LogicEntrance.buy_year3_books]), - RegionData(LogicRegion.bookseller_3), -] - -# Exists and where they lead -vanilla_connections = [ - ConnectionData(Entrance.to_stardew_valley, RegionName.stardew_valley), - ConnectionData(Entrance.to_farmhouse, RegionName.farm_house), - ConnectionData(Entrance.farmhouse_to_farm, RegionName.farm), - ConnectionData(Entrance.downstairs_to_cellar, RegionName.cellar), - ConnectionData(Entrance.farm_to_backwoods, RegionName.backwoods), - ConnectionData(Entrance.farm_to_bus_stop, RegionName.bus_stop), - ConnectionData(Entrance.farm_to_forest, RegionName.forest), - ConnectionData(Entrance.farm_to_farmcave, RegionName.farm_cave, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(Entrance.enter_greenhouse, RegionName.greenhouse), - ConnectionData(Entrance.enter_coop, RegionName.coop), - ConnectionData(Entrance.enter_barn, RegionName.barn), - ConnectionData(Entrance.enter_shed, RegionName.shed), - ConnectionData(Entrance.enter_slime_hutch, RegionName.slime_hutch), - ConnectionData(Entrance.use_desert_obelisk, RegionName.desert), - ConnectionData(Entrance.use_island_obelisk, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.use_farm_obelisk, RegionName.farm), - ConnectionData(Entrance.backwoods_to_mountain, RegionName.mountain), - ConnectionData(Entrance.bus_stop_to_town, RegionName.town), - ConnectionData(Entrance.bus_stop_to_tunnel_entrance, RegionName.tunnel_entrance), - ConnectionData(Entrance.tunnel_entrance_to_bus_tunnel, RegionName.bus_tunnel, flag=RandomizationFlag.NON_PROGRESSION), - ConnectionData(Entrance.take_bus_to_desert, RegionName.desert), - ConnectionData(Entrance.forest_to_town, RegionName.town), - ConnectionData(Entrance.forest_to_wizard_tower, RegionName.wizard_tower, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.forest_to_marnie_ranch, RegionName.ranch, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.forest_to_leah_cottage, RegionName.leah_house, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_secret_woods, RegionName.secret_woods), - ConnectionData(Entrance.forest_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.forest_to_mastery_cave, RegionName.mastery_cave, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.MASTERIES), - ConnectionData(Entrance.town_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_mutant_bug_lair, RegionName.mutant_bug_lair, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.mountain_to_railroad, RegionName.railroad), - ConnectionData(Entrance.mountain_to_tent, RegionName.tent, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_leo_treehouse, RegionName.leo_treehouse, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.mountain_to_carpenter_shop, RegionName.carpenter, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.mountain_to_maru_room, RegionName.maru_room, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_sebastian_room, RegionName.sebastian_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.mountain_to_adventurer_guild, RegionName.adventurer_guild, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.adventurer_guild_to_bedroom, RegionName.adventurer_guild_bedroom), - ConnectionData(Entrance.enter_quarry, RegionName.quarry), - ConnectionData(Entrance.enter_quarry_mine_entrance, RegionName.quarry_mine_entrance, - flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_quarry_mine, RegionName.quarry_mine), - ConnectionData(Entrance.mountain_to_town, RegionName.town), - ConnectionData(Entrance.town_to_community_center, RegionName.community_center, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.access_crafts_room, RegionName.crafts_room), - ConnectionData(Entrance.access_pantry, RegionName.pantry), - ConnectionData(Entrance.access_fish_tank, RegionName.fish_tank), - ConnectionData(Entrance.access_boiler_room, RegionName.boiler_room), - ConnectionData(Entrance.access_bulletin_board, RegionName.bulletin_board), - ConnectionData(Entrance.access_vault, RegionName.vault), - ConnectionData(Entrance.town_to_hospital, RegionName.hospital, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_harvey_room, RegionName.harvey_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.town_to_pierre_general_store, RegionName.pierre_store, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_sunroom, RegionName.sunroom, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.town_to_clint_blacksmith, RegionName.blacksmith, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_saloon, RegionName.saloon, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.play_journey_of_the_prairie_king, RegionName.jotpk_world_1), - ConnectionData(Entrance.reach_jotpk_world_2, RegionName.jotpk_world_2), - ConnectionData(Entrance.reach_jotpk_world_3, RegionName.jotpk_world_3), - ConnectionData(Entrance.play_junimo_kart, RegionName.junimo_kart_1), - ConnectionData(Entrance.reach_junimo_kart_2, RegionName.junimo_kart_2), - ConnectionData(Entrance.reach_junimo_kart_3, RegionName.junimo_kart_3), - ConnectionData(Entrance.reach_junimo_kart_4, RegionName.junimo_kart_4), - ConnectionData(Entrance.town_to_sam_house, RegionName.sam_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_haley_house, RegionName.haley_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_mayor_manor, RegionName.mayor_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_alex_house, RegionName.alex_house, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_trailer, RegionName.trailer, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_museum, RegionName.museum, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.town_to_jojamart, RegionName.jojamart, - flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.purchase_movie_ticket, RegionName.movie_ticket_stand), - ConnectionData(Entrance.enter_abandoned_jojamart, RegionName.abandoned_jojamart), - ConnectionData(Entrance.enter_movie_theater, RegionName.movie_theater), - ConnectionData(Entrance.town_to_beach, RegionName.beach), - ConnectionData(Entrance.enter_elliott_house, RegionName.elliott_house, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.beach_to_willy_fish_shop, RegionName.fish_shop, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.fish_shop_to_boat_tunnel, RegionName.boat_tunnel, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.boat_to_ginger_island, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_tide_pools, RegionName.tide_pools), - ConnectionData(Entrance.mountain_to_the_mines, RegionName.mines, - flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.dig_to_mines_floor_5, RegionName.mines_floor_5), - ConnectionData(Entrance.dig_to_mines_floor_10, RegionName.mines_floor_10), - ConnectionData(Entrance.dig_to_mines_floor_15, RegionName.mines_floor_15), - ConnectionData(Entrance.dig_to_mines_floor_20, RegionName.mines_floor_20), - ConnectionData(Entrance.dig_to_mines_floor_25, RegionName.mines_floor_25), - ConnectionData(Entrance.dig_to_mines_floor_30, RegionName.mines_floor_30), - ConnectionData(Entrance.dig_to_mines_floor_35, RegionName.mines_floor_35), - ConnectionData(Entrance.dig_to_mines_floor_40, RegionName.mines_floor_40), - ConnectionData(Entrance.dig_to_mines_floor_45, RegionName.mines_floor_45), - ConnectionData(Entrance.dig_to_mines_floor_50, RegionName.mines_floor_50), - ConnectionData(Entrance.dig_to_mines_floor_55, RegionName.mines_floor_55), - ConnectionData(Entrance.dig_to_mines_floor_60, RegionName.mines_floor_60), - ConnectionData(Entrance.dig_to_mines_floor_65, RegionName.mines_floor_65), - ConnectionData(Entrance.dig_to_mines_floor_70, RegionName.mines_floor_70), - ConnectionData(Entrance.dig_to_mines_floor_75, RegionName.mines_floor_75), - ConnectionData(Entrance.dig_to_mines_floor_80, RegionName.mines_floor_80), - ConnectionData(Entrance.dig_to_mines_floor_85, RegionName.mines_floor_85), - ConnectionData(Entrance.dig_to_mines_floor_90, RegionName.mines_floor_90), - ConnectionData(Entrance.dig_to_mines_floor_95, RegionName.mines_floor_95), - ConnectionData(Entrance.dig_to_mines_floor_100, RegionName.mines_floor_100), - ConnectionData(Entrance.dig_to_mines_floor_105, RegionName.mines_floor_105), - ConnectionData(Entrance.dig_to_mines_floor_110, RegionName.mines_floor_110), - ConnectionData(Entrance.dig_to_mines_floor_115, RegionName.mines_floor_115), - ConnectionData(Entrance.dig_to_mines_floor_120, RegionName.mines_floor_120), - ConnectionData(Entrance.dig_to_dangerous_mines_20, RegionName.dangerous_mines_20, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_to_dangerous_mines_60, RegionName.dangerous_mines_60, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_to_dangerous_mines_100, RegionName.dangerous_mines_100, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_skull_cavern_entrance, RegionName.skull_cavern_entrance, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_oasis, RegionName.oasis, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_casino, RegionName.casino, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_skull_cavern, RegionName.skull_cavern), - ConnectionData(Entrance.mine_to_skull_cavern_floor_25, RegionName.skull_cavern_25), - ConnectionData(Entrance.mine_to_skull_cavern_floor_50, RegionName.skull_cavern_50), - ConnectionData(Entrance.mine_to_skull_cavern_floor_75, RegionName.skull_cavern_75), - ConnectionData(Entrance.mine_to_skull_cavern_floor_100, RegionName.skull_cavern_100), - ConnectionData(Entrance.mine_to_skull_cavern_floor_125, RegionName.skull_cavern_125), - ConnectionData(Entrance.mine_to_skull_cavern_floor_150, RegionName.skull_cavern_150), - ConnectionData(Entrance.mine_to_skull_cavern_floor_175, RegionName.skull_cavern_175), - ConnectionData(Entrance.mine_to_skull_cavern_floor_200, RegionName.skull_cavern_200), - ConnectionData(Entrance.enter_dangerous_skull_cavern, RegionName.dangerous_skull_cavern, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.enter_witch_warp_cave, RegionName.witch_warp_cave, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_witch_swamp, RegionName.witch_swamp, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_witch_hut, RegionName.witch_hut, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.witch_warp_to_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_bathhouse_entrance, RegionName.bathhouse_entrance, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), - ConnectionData(Entrance.enter_locker_room, RegionName.locker_room, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.enter_public_bath, RegionName.public_bath, flag=RandomizationFlag.BUILDINGS), - ConnectionData(Entrance.island_south_to_west, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_north, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_east, RegionName.island_east, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_south_to_southeast, RegionName.island_south_east, - flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.use_island_resort, RegionName.island_resort, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_islandfarmhouse, RegionName.island_farmhouse, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_gourmand_cave, RegionName.gourmand_frog_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_crystals_cave, RegionName.colored_crystals_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_shipwreck, RegionName.shipwreck, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_west_to_qi_walnut_room, RegionName.qi_walnut_room, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_east_to_leo_hut, RegionName.leo_hut, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_east_to_island_shrine, RegionName.island_shrine, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_southeast_to_pirate_cove, RegionName.pirate_cove, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_field_office, RegionName.field_office, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.dig_site_to_professor_snail_cave, RegionName.professor_snail_cave, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.island_north_to_volcano, RegionName.volcano, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.volcano_to_secret_beach, RegionName.volcano_secret_beach, - flag=RandomizationFlag.BUILDINGS | RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.talk_to_island_trader, RegionName.island_trader, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.climb_to_volcano_5, RegionName.volcano_floor_5, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.talk_to_volcano_dwarf, RegionName.volcano_dwarf_shop, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.climb_to_volcano_10, RegionName.volcano_floor_10, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_docks, RegionName.island_south, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_jungle, RegionName.island_west, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_volcano_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_dig_site, RegionName.dig_site, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_dig_site_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_docks_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(Entrance.parrot_express_jungle_to_volcano, RegionName.island_north, flag=RandomizationFlag.GINGER_ISLAND), - - ConnectionData(LogicEntrance.talk_to_mines_dwarf, LogicRegion.mines_dwarf_shop), - - ConnectionData(LogicEntrance.buy_from_traveling_merchant, LogicRegion.traveling_cart), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_sunday, LogicRegion.traveling_cart_sunday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_monday, LogicRegion.traveling_cart_monday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_tuesday, LogicRegion.traveling_cart_tuesday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_wednesday, LogicRegion.traveling_cart_wednesday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_thursday, LogicRegion.traveling_cart_thursday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_friday, LogicRegion.traveling_cart_friday), - ConnectionData(LogicEntrance.buy_from_traveling_merchant_saturday, LogicRegion.traveling_cart_saturday), - ConnectionData(LogicEntrance.complete_raccoon_requests, LogicRegion.raccoon_daddy), - ConnectionData(LogicEntrance.fish_in_waterfall, LogicRegion.forest_waterfall), - ConnectionData(LogicEntrance.buy_from_raccoon, LogicRegion.raccoon_shop), - ConnectionData(LogicEntrance.farmhouse_cooking, LogicRegion.kitchen), - ConnectionData(LogicEntrance.watch_queen_of_sauce, LogicRegion.queen_of_sauce), - - ConnectionData(LogicEntrance.grow_spring_crops, LogicRegion.spring_farming), - ConnectionData(LogicEntrance.grow_summer_crops, LogicRegion.summer_farming), - ConnectionData(LogicEntrance.grow_fall_crops, LogicRegion.fall_farming), - ConnectionData(LogicEntrance.grow_winter_crops, LogicRegion.winter_farming), - ConnectionData(LogicEntrance.grow_spring_crops_in_greenhouse, LogicRegion.spring_farming), - ConnectionData(LogicEntrance.grow_summer_crops_in_greenhouse, LogicRegion.summer_farming), - ConnectionData(LogicEntrance.grow_fall_crops_in_greenhouse, LogicRegion.fall_farming), - ConnectionData(LogicEntrance.grow_winter_crops_in_greenhouse, LogicRegion.winter_farming), - ConnectionData(LogicEntrance.grow_indoor_crops_in_greenhouse, LogicRegion.indoor_farming), - ConnectionData(LogicEntrance.grow_spring_crops_on_island, LogicRegion.spring_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_summer_crops_on_island, LogicRegion.summer_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_fall_crops_on_island, LogicRegion.fall_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_winter_crops_on_island, LogicRegion.winter_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_indoor_crops_on_island, LogicRegion.indoor_farming, flag=RandomizationFlag.GINGER_ISLAND), - ConnectionData(LogicEntrance.grow_summer_fall_crops_in_summer, LogicRegion.summer_or_fall_farming), - ConnectionData(LogicEntrance.grow_summer_fall_crops_in_fall, LogicRegion.summer_or_fall_farming), - - ConnectionData(LogicEntrance.shipping, LogicRegion.shipping), - ConnectionData(LogicEntrance.blacksmith_copper, LogicRegion.blacksmith_copper), - ConnectionData(LogicEntrance.blacksmith_iron, LogicRegion.blacksmith_iron), - ConnectionData(LogicEntrance.blacksmith_gold, LogicRegion.blacksmith_gold), - ConnectionData(LogicEntrance.blacksmith_iridium, LogicRegion.blacksmith_iridium), - ConnectionData(LogicEntrance.fishing, LogicRegion.fishing), - ConnectionData(LogicEntrance.island_cooking, LogicRegion.kitchen), - ConnectionData(LogicEntrance.attend_egg_festival, LogicRegion.egg_festival), - ConnectionData(LogicEntrance.attend_desert_festival, LogicRegion.desert_festival), - ConnectionData(LogicEntrance.attend_flower_dance, LogicRegion.flower_dance), - ConnectionData(LogicEntrance.attend_luau, LogicRegion.luau), - ConnectionData(LogicEntrance.attend_trout_derby, LogicRegion.trout_derby), - ConnectionData(LogicEntrance.attend_moonlight_jellies, LogicRegion.moonlight_jellies), - ConnectionData(LogicEntrance.attend_fair, LogicRegion.fair), - ConnectionData(LogicEntrance.attend_spirit_eve, LogicRegion.spirit_eve), - ConnectionData(LogicEntrance.attend_festival_of_ice, LogicRegion.festival_of_ice), - ConnectionData(LogicEntrance.attend_night_market, LogicRegion.night_market), - ConnectionData(LogicEntrance.attend_winter_star, LogicRegion.winter_star), - ConnectionData(LogicEntrance.attend_squidfest, LogicRegion.squidfest), - ConnectionData(LogicEntrance.buy_experience_books, LogicRegion.bookseller_1), - ConnectionData(LogicEntrance.buy_year1_books, LogicRegion.bookseller_2), - ConnectionData(LogicEntrance.buy_year3_books, LogicRegion.bookseller_3), -] - - -def create_final_regions(world_options) -> List[RegionData]: - final_regions = [] - final_regions.extend(vanilla_regions) - if world_options.mods is None: - return final_regions - for mod in sorted(world_options.mods.value): - if mod not in ModDataList: - continue - for mod_region in ModDataList[mod].regions: - existing_region = next( - (region for region in final_regions if region.name == mod_region.name), None) - if existing_region: - final_regions.remove(existing_region) - if ModificationFlag.MODIFIED in mod_region.flag: - mod_region = modify_vanilla_regions(existing_region, mod_region) - final_regions.append(existing_region.get_merged_with(mod_region.exits)) - continue - final_regions.append(mod_region.get_clone()) - - return final_regions - - -def create_final_connections_and_regions(world_options) -> Tuple[Dict[str, ConnectionData], Dict[str, RegionData]]: - regions_data: Dict[str, RegionData] = {region.name: region for region in create_final_regions(world_options)} - connections = {connection.name: connection for connection in vanilla_connections} - connections = modify_connections_for_mods(connections, sorted(world_options.mods.value)) - include_island = world_options.exclude_ginger_island == ExcludeGingerIsland.option_false - return remove_ginger_island_regions_and_connections(regions_data, connections, include_island) - - -def remove_ginger_island_regions_and_connections(regions_by_name: Dict[str, RegionData], connections: Dict[str, ConnectionData], include_island: bool): - if include_island: - return connections, regions_by_name - - removed_connections = set() - - for connection_name in tuple(connections): - connection = connections[connection_name] - if connection.flag & RandomizationFlag.GINGER_ISLAND: - connections.pop(connection_name) - removed_connections.add(connection_name) - - for region_name in tuple(regions_by_name): - region = regions_by_name[region_name] - if region.is_ginger_island: - regions_by_name.pop(region_name) - else: - regions_by_name[region_name] = region.get_without_exits(removed_connections) - - return connections, regions_by_name - - -def modify_connections_for_mods(connections: Dict[str, ConnectionData], mods: Iterable) -> Dict[str, ConnectionData]: - for mod in mods: - if mod not in ModDataList: - continue - if mod in vanilla_connections_to_remove_by_mod: - for connection_data in vanilla_connections_to_remove_by_mod[mod]: - connections.pop(connection_data.name) - connections.update({connection.name: connection for connection in ModDataList[mod].connections}) - return connections - - -def modify_vanilla_regions(existing_region: RegionData, modified_region: RegionData) -> RegionData: - updated_region = existing_region - region_exits = updated_region.exits - modified_exits = modified_region.exits - for exits in modified_exits: - region_exits.remove(exits) - - return updated_region - - -def create_regions(region_factory: RegionFactory, random: Random, world_options: StardewValleyOptions, content: StardewContent) \ - -> Tuple[Dict[str, Region], Dict[str, Entrance], Dict[str, str]]: - entrances_data, regions_data = create_final_connections_and_regions(world_options) - regions_by_name: Dict[str: Region] = {region_name: region_factory(region_name, regions_data[region_name].exits) for region_name in regions_data} - entrances_by_name: Dict[str: Entrance] = { - entrance.name: entrance - for region in regions_by_name.values() - for entrance in region.exits - if entrance.name in entrances_data - } - - connections, randomized_data = randomize_connections(random, world_options, content, regions_data, entrances_data) - - for connection in connections: - if connection.name in entrances_by_name: - entrances_by_name[connection.name].connect(regions_by_name[connection.destination]) - return regions_by_name, entrances_by_name, randomized_data - - -def randomize_connections(random: Random, world_options: StardewValleyOptions, content: StardewContent, regions_by_name: Dict[str, RegionData], - connections_by_name: Dict[str, ConnectionData]) -> Tuple[List[ConnectionData], Dict[str, str]]: - connections_to_randomize: List[ConnectionData] = [] - if world_options.entrance_randomization == EntranceRandomization.option_pelican_town: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.PELICAN_TOWN in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_non_progression: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.NON_PROGRESSION in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_buildings or world_options.entrance_randomization == EntranceRandomization.option_buildings_without_house: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.BUILDINGS in connections_by_name[connection].flag] - elif world_options.entrance_randomization == EntranceRandomization.option_chaos: - connections_to_randomize = [connections_by_name[connection] for connection in connections_by_name if - RandomizationFlag.BUILDINGS in connections_by_name[connection].flag] - connections_to_randomize = remove_excluded_entrances(connections_to_randomize, content) - - # On Chaos, we just add the connections to randomize, unshuffled, and the client does it every day - randomized_data_for_mod = {} - for connection in connections_to_randomize: - randomized_data_for_mod[connection.name] = connection.name - randomized_data_for_mod[connection.reverse] = connection.reverse - return list(connections_by_name.values()), randomized_data_for_mod - - connections_to_randomize = remove_excluded_entrances(connections_to_randomize, content) - random.shuffle(connections_to_randomize) - destination_pool = list(connections_to_randomize) - random.shuffle(destination_pool) - - randomized_connections = randomize_chosen_connections(connections_to_randomize, destination_pool) - add_non_randomized_connections(list(connections_by_name.values()), connections_to_randomize, randomized_connections) - - swap_connections_until_valid(regions_by_name, connections_by_name, randomized_connections, connections_to_randomize, random) - randomized_connections_for_generation = create_connections_for_generation(randomized_connections) - randomized_data_for_mod = create_data_for_mod(randomized_connections, connections_to_randomize) - - return randomized_connections_for_generation, randomized_data_for_mod - - -def remove_excluded_entrances(connections_to_randomize: List[ConnectionData], content: StardewContent) -> List[ConnectionData]: - # FIXME remove when regions are handled in content packs - if content_packs.ginger_island_content_pack.name not in content.registered_packs: - connections_to_randomize = [connection for connection in connections_to_randomize if RandomizationFlag.GINGER_ISLAND not in connection.flag] - if not content.features.skill_progression.are_masteries_shuffled: - connections_to_randomize = [connection for connection in connections_to_randomize if RandomizationFlag.MASTERIES not in connection.flag] - - return connections_to_randomize - - -def randomize_chosen_connections(connections_to_randomize: List[ConnectionData], - destination_pool: List[ConnectionData]) -> Dict[ConnectionData, ConnectionData]: - randomized_connections = {} - for connection in connections_to_randomize: - destination = destination_pool.pop() - randomized_connections[connection] = destination - return randomized_connections - - -def create_connections_for_generation(randomized_connections: Dict[ConnectionData, ConnectionData]) -> List[ConnectionData]: - connections = [] - for connection in randomized_connections: - destination = randomized_connections[connection] - connections.append(ConnectionData(connection.name, destination.destination, destination.reverse)) - return connections - - -def create_data_for_mod(randomized_connections: Dict[ConnectionData, ConnectionData], - connections_to_randomize: List[ConnectionData]) -> Dict[str, str]: - randomized_data_for_mod = {} - for connection in randomized_connections: - if connection not in connections_to_randomize: - continue - destination = randomized_connections[connection] - add_to_mod_data(connection, destination, randomized_data_for_mod) - return randomized_data_for_mod - - -def add_to_mod_data(connection: ConnectionData, destination: ConnectionData, randomized_data_for_mod: Dict[str, str]): - randomized_data_for_mod[connection.name] = destination.name - randomized_data_for_mod[destination.reverse] = connection.reverse - - -def add_non_randomized_connections(all_connections: List[ConnectionData], connections_to_randomize: List[ConnectionData], - randomized_connections: Dict[ConnectionData, ConnectionData]): - for connection in all_connections: - if connection in connections_to_randomize: - continue - randomized_connections[connection] = connection - - -def swap_connections_until_valid(regions_by_name, connections_by_name: Dict[str, ConnectionData], randomized_connections: Dict[ConnectionData, ConnectionData], - connections_to_randomize: List[ConnectionData], random: Random): - while True: - reachable_regions, unreachable_regions = find_reachable_regions(regions_by_name, connections_by_name, randomized_connections) - if not unreachable_regions: - return randomized_connections - swap_one_random_connection(regions_by_name, connections_by_name, randomized_connections, reachable_regions, - unreachable_regions, connections_to_randomize, random) - - -def region_should_be_reachable(region_name: str, connections_in_slot: Iterable[ConnectionData]) -> bool: - if region_name == RegionName.menu: - return True - for connection in connections_in_slot: - if region_name == connection.destination: - return True - return False - - -def find_reachable_regions(regions_by_name, connections_by_name, - randomized_connections: Dict[ConnectionData, ConnectionData]): - reachable_regions = {RegionName.menu} - unreachable_regions = {region for region in regions_by_name.keys()} - # unreachable_regions = {region for region in regions_by_name.keys() if region_should_be_reachable(region, connections_by_name.values())} - unreachable_regions.remove(RegionName.menu) - exits_to_explore = list(regions_by_name[RegionName.menu].exits) - while exits_to_explore: - exit_name = exits_to_explore.pop() - # if exit_name not in connections_by_name: - # continue - exit_connection = connections_by_name[exit_name] - replaced_connection = randomized_connections[exit_connection] - target_region_name = replaced_connection.destination - if target_region_name in reachable_regions: - continue - - target_region = regions_by_name[target_region_name] - reachable_regions.add(target_region_name) - unreachable_regions.remove(target_region_name) - exits_to_explore.extend(target_region.exits) - return reachable_regions, unreachable_regions - - -def swap_one_random_connection(regions_by_name, connections_by_name, randomized_connections: Dict[ConnectionData, ConnectionData], - reachable_regions: Set[str], unreachable_regions: Set[str], - connections_to_randomize: List[ConnectionData], random: Random): - randomized_connections_already_shuffled = {connection: randomized_connections[connection] - for connection in randomized_connections - if connection != randomized_connections[connection]} - unreachable_regions_names_leading_somewhere = [region for region in sorted(unreachable_regions) if len(regions_by_name[region].exits) > 0] - unreachable_regions_leading_somewhere = [regions_by_name[region_name] for region_name in unreachable_regions_names_leading_somewhere] - unreachable_regions_exits_names = [exit_name for region in unreachable_regions_leading_somewhere for exit_name in region.exits] - unreachable_connections = [connections_by_name[exit_name] for exit_name in unreachable_regions_exits_names] - unreachable_connections_that_can_be_randomized = [connection for connection in unreachable_connections if connection in connections_to_randomize] - - chosen_unreachable_entrance = random.choice(unreachable_connections_that_can_be_randomized) - - chosen_reachable_entrance = None - while chosen_reachable_entrance is None or chosen_reachable_entrance not in randomized_connections_already_shuffled: - chosen_reachable_region_name = random.choice(sorted(reachable_regions)) - chosen_reachable_region = regions_by_name[chosen_reachable_region_name] - if not any(chosen_reachable_region.exits): - continue - chosen_reachable_entrance_name = random.choice(chosen_reachable_region.exits) - chosen_reachable_entrance = connections_by_name[chosen_reachable_entrance_name] - - swap_two_connections(chosen_reachable_entrance, chosen_unreachable_entrance, randomized_connections) - - -def swap_two_connections(entrance_1, entrance_2, randomized_connections): - reachable_destination = randomized_connections[entrance_1] - unreachable_destination = randomized_connections[entrance_2] - randomized_connections[entrance_1] = unreachable_destination - randomized_connections[entrance_2] = reachable_destination diff --git a/worlds/stardew_valley/regions/__init__.py b/worlds/stardew_valley/regions/__init__.py new file mode 100644 index 000000000000..63e8afc2fba5 --- /dev/null +++ b/worlds/stardew_valley/regions/__init__.py @@ -0,0 +1,2 @@ +from .entrance_rando import prepare_mod_data +from .regions import create_regions, RegionFactory diff --git a/worlds/stardew_valley/regions/entrance_rando.py b/worlds/stardew_valley/regions/entrance_rando.py new file mode 100644 index 000000000000..7aa91685e894 --- /dev/null +++ b/worlds/stardew_valley/regions/entrance_rando.py @@ -0,0 +1,73 @@ +from BaseClasses import Region +from entrance_rando import ERPlacementState +from .model import ConnectionData, RandomizationFlag, reverse_connection_name, RegionData +from ..content import StardewContent +from ..options import EntranceRandomization + + +def create_player_randomization_flag(entrance_randomization_choice: EntranceRandomization, content: StardewContent): + """Return the flag that a connection is expected to have to be randomized. Only the bit corresponding to the player randomization choice will be enabled. + + Other bits for content exclusion might also be enabled, tho the preferred solution to exclude content should be to not create those regions at alls, when possible. + """ + flag = RandomizationFlag.NOT_RANDOMIZED + + if entrance_randomization_choice.value == EntranceRandomization.option_disabled: + return flag + + if entrance_randomization_choice == EntranceRandomization.option_pelican_town: + flag |= RandomizationFlag.BIT_PELICAN_TOWN + elif entrance_randomization_choice == EntranceRandomization.option_non_progression: + flag |= RandomizationFlag.BIT_NON_PROGRESSION + elif entrance_randomization_choice in ( + EntranceRandomization.option_buildings, + EntranceRandomization.option_buildings_without_house, + EntranceRandomization.option_chaos + ): + flag |= RandomizationFlag.BIT_BUILDINGS + + if not content.features.skill_progression.are_masteries_shuffled: + flag |= RandomizationFlag.EXCLUDE_MASTERIES + + return flag + + +def connect_regions(region_data_by_name: dict[str, RegionData], connection_data_by_name: dict[str, ConnectionData], regions_by_name: dict[str, Region], + player_randomization_flag: RandomizationFlag) -> None: + for region_name, region_data in region_data_by_name.items(): + origin_region = regions_by_name[region_name] + + for exit_name in region_data.exits: + connection_data = connection_data_by_name[exit_name] + destination_region = regions_by_name[connection_data.destination] + + if connection_data.is_eligible_for_randomization(player_randomization_flag): + create_entrance_rando_target(origin_region, destination_region, connection_data) + else: + origin_region.connect(destination_region, connection_data.name) + + +def create_entrance_rando_target(origin: Region, destination: Region, connection_data: ConnectionData) -> None: + """We need our own function to create the GER targets, because the Stardew Mod have very specific expectations for the name of the entrances. + We need to know exactly which entrances to swap in both directions.""" + origin.create_exit(connection_data.name) + destination.create_er_target(connection_data.reverse) + + +def prepare_mod_data(placements: ERPlacementState) -> dict[str, str]: + """Take the placements from GER and prepare the data for the mod. + The mod require a dictionary detailing which connections need to be swapped. It acts as if the connections are decoupled, so both directions are required. + + For instance, GER will provide placements like (Town to Community Center, Hospital to Town), meaning that the door of the Community Center will instead lead + to the Hospital, and that the exit of the Hospital will lead to the Town by the Community Center door. The StardewAP mod need to know both swaps, being the + original destination of the "Town to Community Center" connection is to be replaced by the original destination of "Town to Hospital", and the original + destination of "Hospital to Town" is to be replaced by the original destination of "Community Center to Town". + """ + + swapped_connections = {} + + for entrance, exit_ in placements.pairings: + swapped_connections[entrance] = reverse_connection_name(exit_) + swapped_connections[exit_] = reverse_connection_name(entrance) + + return swapped_connections diff --git a/worlds/stardew_valley/regions/model.py b/worlds/stardew_valley/regions/model.py new file mode 100644 index 000000000000..07c390155895 --- /dev/null +++ b/worlds/stardew_valley/regions/model.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from collections.abc import Container +from dataclasses import dataclass, field +from enum import IntFlag + +connector_keyword = " to " + + +def reverse_connection_name(name: str) -> str | None: + try: + origin, destination = name.split(connector_keyword) + except ValueError: + return None + return f"{destination}{connector_keyword}{origin}" + + +class MergeFlag(IntFlag): + ADD_EXITS = 0 + REMOVE_EXITS = 1 + + +class RandomizationFlag(IntFlag): + NOT_RANDOMIZED = 0 + + # Randomization options + # The first 4 bits are used to mark if an entrance is eligible for randomization according to the entrance randomization options. + BIT_PELICAN_TOWN = 1 # 0b0001 + BIT_NON_PROGRESSION = 1 << 1 # 0b0010 + BIT_BUILDINGS = 1 << 2 # 0b0100 + BIT_EVERYTHING = 1 << 3 # 0b1000 + + # Content flag for entrances exclusions + # The next 2 bits are used to mark if an entrance is to be excluded from randomization according to the content options. + # Those bits must be removed from an entrance flags when then entrance must be excluded. + __UNUSED = 1 << 4 # 0b010000 + EXCLUDE_MASTERIES = 1 << 5 # 0b100000 + + # Entrance groups + # The last bit is used to add additional qualifiers on entrances to group them + # Those bits should be added when an entrance need additional qualifiers. + LEAD_TO_OPEN_AREA = 1 << 6 + + # Tags to apply on connections + EVERYTHING = EXCLUDE_MASTERIES | BIT_EVERYTHING + BUILDINGS = EVERYTHING | BIT_BUILDINGS + NON_PROGRESSION = BUILDINGS | BIT_NON_PROGRESSION + PELICAN_TOWN = NON_PROGRESSION | BIT_PELICAN_TOWN + + +@dataclass(frozen=True) +class RegionData: + name: str + exits: tuple[str, ...] = field(default_factory=tuple) + flag: MergeFlag = MergeFlag.ADD_EXITS + + def __post_init__(self): + assert not isinstance(self.exits, str), "Exits must be a tuple of strings, you probably forgot a trailing comma." + + def merge_with(self, other: RegionData) -> RegionData: + assert self.name == other.name, "Regions must have the same name to be merged" + + if other.flag == MergeFlag.REMOVE_EXITS: + return self.get_without_exits(other.exits) + + merged_exits = self.exits + other.exits + assert len(merged_exits) == len(set(merged_exits)), "Two regions getting merged have duplicated exists..." + + return RegionData(self.name, merged_exits) + + def get_without_exits(self, exits_to_remove: Container[str]) -> RegionData: + exits = tuple(exit_ for exit_ in self.exits if exit_ not in exits_to_remove) + return RegionData(self.name, exits) + + +@dataclass(frozen=True) +class ConnectionData: + name: str + destination: str + flag: RandomizationFlag = RandomizationFlag.NOT_RANDOMIZED + + @property + def reverse(self) -> str | None: + return reverse_connection_name(self.name) + + def is_eligible_for_randomization(self, chosen_randomization_flag: RandomizationFlag) -> bool: + return chosen_randomization_flag and chosen_randomization_flag in self.flag + + +@dataclass(frozen=True) +class ModRegionsData: + mod_name: str + regions: list[RegionData] + connections: list[ConnectionData] diff --git a/worlds/stardew_valley/regions/mods.py b/worlds/stardew_valley/regions/mods.py new file mode 100644 index 000000000000..fca54619f518 --- /dev/null +++ b/worlds/stardew_valley/regions/mods.py @@ -0,0 +1,46 @@ +from collections.abc import Iterable + +from .model import ConnectionData, RegionData, ModRegionsData +from ..mods.region_data import region_data_by_content_pack, vanilla_connections_to_remove_by_content_pack + + +def modify_regions_for_mods(current_regions_by_name: dict[str, RegionData], active_content_packs: Iterable[str]) -> None: + for content_pack in active_content_packs: + try: + region_data = region_data_by_content_pack[content_pack] + except KeyError: + continue + + merge_mod_regions(current_regions_by_name, region_data) + + +def merge_mod_regions(current_regions_by_name: dict[str, RegionData], mod_region_data: ModRegionsData) -> None: + for new_region in mod_region_data.regions: + region_name = new_region.name + try: + current_region = current_regions_by_name[region_name] + except KeyError: + current_regions_by_name[region_name] = new_region + continue + + current_regions_by_name[region_name] = current_region.merge_with(new_region) + + +def modify_connections_for_mods(connections: dict[str, ConnectionData], active_mods: Iterable[str]) -> None: + for active_mod in active_mods: + try: + region_data = region_data_by_content_pack[active_mod] + except KeyError: + continue + + try: + vanilla_connections_to_remove = vanilla_connections_to_remove_by_content_pack[active_mod] + for connection_name in vanilla_connections_to_remove: + connections.pop(connection_name) + except KeyError: + pass + + connections.update({ + connection.name: connection + for connection in region_data.connections + }) diff --git a/worlds/stardew_valley/regions/regions.py b/worlds/stardew_valley/regions/regions.py new file mode 100644 index 000000000000..ceaec5b2ac0d --- /dev/null +++ b/worlds/stardew_valley/regions/regions.py @@ -0,0 +1,61 @@ +from typing import Protocol + +from BaseClasses import Region +from . import vanilla_data, mods +from .entrance_rando import create_player_randomization_flag, connect_regions +from .model import ConnectionData, RegionData +from ..content import StardewContent +from ..content.vanilla.ginger_island import ginger_island_content_pack +from ..options import StardewValleyOptions + + +class RegionFactory(Protocol): + def __call__(self, name: str) -> Region: + raise NotImplementedError + + +def create_regions(region_factory: RegionFactory, world_options: StardewValleyOptions, content: StardewContent) -> dict[str, Region]: + connection_data_by_name, region_data_by_name = create_connections_and_regions(content.registered_packs) + + regions_by_name: dict[str: Region] = { + region_name: region_factory(region_name) + for region_name in region_data_by_name + } + + randomization_flag = create_player_randomization_flag(world_options.entrance_randomization, content) + connect_regions(region_data_by_name, connection_data_by_name, regions_by_name, randomization_flag) + + return regions_by_name + + +def create_connections_and_regions(active_content_packs: set[str]) -> tuple[dict[str, ConnectionData], dict[str, RegionData]]: + regions_by_name = create_all_regions(active_content_packs) + connections_by_name = create_all_connections(active_content_packs) + + return connections_by_name, regions_by_name + + +def create_all_regions(active_content_packs: set[str]) -> dict[str, RegionData]: + current_regions_by_name = create_vanilla_regions(active_content_packs) + mods.modify_regions_for_mods(current_regions_by_name, sorted(active_content_packs)) + return current_regions_by_name + + +def create_vanilla_regions(active_content_packs: set[str]) -> dict[str, RegionData]: + if ginger_island_content_pack.name in active_content_packs: + return {**vanilla_data.regions_with_ginger_island_by_name} + else: + return {**vanilla_data.regions_without_ginger_island_by_name} + + +def create_all_connections(active_content_packs: set[str]) -> dict[str, ConnectionData]: + connections = create_vanilla_connections(active_content_packs) + mods.modify_connections_for_mods(connections, sorted(active_content_packs)) + return connections + + +def create_vanilla_connections(active_content_packs: set[str]) -> dict[str, ConnectionData]: + if ginger_island_content_pack.name in active_content_packs: + return {**vanilla_data.connections_with_ginger_island_by_name} + else: + return {**vanilla_data.connections_without_ginger_island_by_name} diff --git a/worlds/stardew_valley/regions/vanilla_data.py b/worlds/stardew_valley/regions/vanilla_data.py new file mode 100644 index 000000000000..dbb83e1063c3 --- /dev/null +++ b/worlds/stardew_valley/regions/vanilla_data.py @@ -0,0 +1,522 @@ +from collections.abc import Mapping +from types import MappingProxyType + +from .model import ConnectionData, RandomizationFlag, RegionData +from ..strings.entrance_names import LogicEntrance, Entrance +from ..strings.region_names import LogicRegion, Region as RegionName + +vanilla_regions: tuple[RegionData, ...] = ( + RegionData(RegionName.menu, (Entrance.to_stardew_valley,)), + RegionData(RegionName.stardew_valley, (Entrance.to_farmhouse,)), + RegionData(RegionName.farm_house, + (Entrance.farmhouse_to_farm, Entrance.downstairs_to_cellar, LogicEntrance.farmhouse_cooking, LogicEntrance.watch_queen_of_sauce)), + RegionData(RegionName.cellar), + RegionData(RegionName.farm, + (Entrance.farm_to_backwoods, Entrance.farm_to_bus_stop, Entrance.farm_to_forest, Entrance.farm_to_farmcave, Entrance.enter_greenhouse, + Entrance.enter_coop, Entrance.enter_barn, Entrance.enter_shed, Entrance.enter_slime_hutch, LogicEntrance.grow_spring_crops, + LogicEntrance.grow_summer_crops, LogicEntrance.grow_fall_crops, LogicEntrance.grow_winter_crops, LogicEntrance.shipping, + LogicEntrance.fishing,)), + RegionData(RegionName.backwoods, (Entrance.backwoods_to_mountain,)), + RegionData(RegionName.bus_stop, + (Entrance.bus_stop_to_town, Entrance.take_bus_to_desert, Entrance.bus_stop_to_tunnel_entrance)), + RegionData(RegionName.forest, + (Entrance.forest_to_town, Entrance.enter_secret_woods, Entrance.forest_to_wizard_tower, Entrance.forest_to_marnie_ranch, + Entrance.forest_to_leah_cottage, Entrance.forest_to_sewer, Entrance.forest_to_mastery_cave, LogicEntrance.buy_from_traveling_merchant, + LogicEntrance.complete_raccoon_requests, LogicEntrance.fish_in_waterfall, LogicEntrance.attend_flower_dance, LogicEntrance.attend_trout_derby, + LogicEntrance.attend_festival_of_ice)), + RegionData(LogicRegion.forest_waterfall), + RegionData(RegionName.farm_cave), + RegionData(RegionName.greenhouse, + (LogicEntrance.grow_spring_crops_in_greenhouse, LogicEntrance.grow_summer_crops_in_greenhouse, LogicEntrance.grow_fall_crops_in_greenhouse, + LogicEntrance.grow_winter_crops_in_greenhouse, LogicEntrance.grow_indoor_crops_in_greenhouse)), + RegionData(RegionName.mountain, + (Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, + Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, + Entrance.mountain_to_town, Entrance.mountain_to_maru_room)), + RegionData(RegionName.maru_room), + RegionData(RegionName.tunnel_entrance, (Entrance.tunnel_entrance_to_bus_tunnel,)), + RegionData(RegionName.bus_tunnel), + RegionData(RegionName.town, + (Entrance.town_to_community_center, Entrance.town_to_beach, Entrance.town_to_hospital, Entrance.town_to_pierre_general_store, + Entrance.town_to_saloon, Entrance.town_to_alex_house, Entrance.town_to_trailer, Entrance.town_to_mayor_manor, Entrance.town_to_sam_house, + Entrance.town_to_haley_house, Entrance.town_to_sewer, Entrance.town_to_clint_blacksmith, Entrance.town_to_museum, Entrance.town_to_jojamart, + Entrance.purchase_movie_ticket, LogicEntrance.buy_experience_books, LogicEntrance.attend_egg_festival, LogicEntrance.attend_fair, + LogicEntrance.attend_spirit_eve, LogicEntrance.attend_winter_star)), + RegionData(RegionName.beach, + (Entrance.beach_to_willy_fish_shop, Entrance.enter_elliott_house, Entrance.enter_tide_pools, LogicEntrance.attend_luau, + LogicEntrance.attend_moonlight_jellies, LogicEntrance.attend_night_market, LogicEntrance.attend_squidfest)), + RegionData(RegionName.railroad, (Entrance.enter_bathhouse_entrance, Entrance.enter_witch_warp_cave)), + RegionData(RegionName.ranch), + RegionData(RegionName.leah_house), + RegionData(RegionName.mastery_cave), + RegionData(RegionName.sewer, (Entrance.enter_mutant_bug_lair,)), + RegionData(RegionName.mutant_bug_lair), + RegionData(RegionName.wizard_tower, (Entrance.enter_wizard_basement, Entrance.use_desert_obelisk)), + RegionData(RegionName.wizard_basement), + RegionData(RegionName.tent), + RegionData(RegionName.carpenter, (Entrance.enter_sebastian_room,)), + RegionData(RegionName.sebastian_room), + RegionData(RegionName.adventurer_guild, (Entrance.adventurer_guild_to_bedroom,)), + RegionData(RegionName.adventurer_guild_bedroom), + RegionData(RegionName.community_center, + (Entrance.access_crafts_room, Entrance.access_pantry, Entrance.access_fish_tank, + Entrance.access_boiler_room, Entrance.access_bulletin_board, Entrance.access_vault)), + RegionData(RegionName.crafts_room), + RegionData(RegionName.pantry), + RegionData(RegionName.fish_tank), + RegionData(RegionName.boiler_room), + RegionData(RegionName.bulletin_board), + RegionData(RegionName.vault), + RegionData(RegionName.hospital, (Entrance.enter_harvey_room,)), + RegionData(RegionName.harvey_room), + RegionData(RegionName.pierre_store, (Entrance.enter_sunroom,)), + RegionData(RegionName.sunroom), + RegionData(RegionName.saloon, (Entrance.play_journey_of_the_prairie_king, Entrance.play_junimo_kart)), + RegionData(RegionName.jotpk_world_1, (Entrance.reach_jotpk_world_2,)), + RegionData(RegionName.jotpk_world_2, (Entrance.reach_jotpk_world_3,)), + RegionData(RegionName.jotpk_world_3), + RegionData(RegionName.junimo_kart_1, (Entrance.reach_junimo_kart_2,)), + RegionData(RegionName.junimo_kart_2, (Entrance.reach_junimo_kart_3,)), + RegionData(RegionName.junimo_kart_3, (Entrance.reach_junimo_kart_4,)), + RegionData(RegionName.junimo_kart_4), + RegionData(RegionName.alex_house), + RegionData(RegionName.trailer), + RegionData(RegionName.mayor_house), + RegionData(RegionName.sam_house), + RegionData(RegionName.haley_house), + RegionData(RegionName.blacksmith, (LogicEntrance.blacksmith_copper,)), + RegionData(RegionName.museum), + RegionData(RegionName.jojamart, (Entrance.enter_abandoned_jojamart,)), + RegionData(RegionName.abandoned_jojamart, (Entrance.enter_movie_theater,)), + RegionData(RegionName.movie_ticket_stand), + RegionData(RegionName.movie_theater), + RegionData(RegionName.fish_shop), + RegionData(RegionName.elliott_house), + RegionData(RegionName.tide_pools), + RegionData(RegionName.bathhouse_entrance, (Entrance.enter_locker_room,)), + RegionData(RegionName.locker_room, (Entrance.enter_public_bath,)), + RegionData(RegionName.public_bath), + RegionData(RegionName.witch_warp_cave, (Entrance.enter_witch_swamp,)), + RegionData(RegionName.witch_swamp, (Entrance.enter_witch_hut,)), + RegionData(RegionName.witch_hut, (Entrance.witch_warp_to_wizard_basement,)), + RegionData(RegionName.quarry, (Entrance.enter_quarry_mine_entrance,)), + RegionData(RegionName.quarry_mine_entrance, (Entrance.enter_quarry_mine,)), + RegionData(RegionName.quarry_mine), + RegionData(RegionName.secret_woods), + RegionData(RegionName.desert, (Entrance.enter_skull_cavern_entrance, Entrance.enter_oasis, LogicEntrance.attend_desert_festival)), + RegionData(RegionName.oasis, (Entrance.enter_casino,)), + RegionData(RegionName.casino), + RegionData(RegionName.skull_cavern_entrance, (Entrance.enter_skull_cavern,)), + RegionData(RegionName.skull_cavern, (Entrance.mine_to_skull_cavern_floor_25,)), + RegionData(RegionName.skull_cavern_25, (Entrance.mine_to_skull_cavern_floor_50,)), + RegionData(RegionName.skull_cavern_50, (Entrance.mine_to_skull_cavern_floor_75,)), + RegionData(RegionName.skull_cavern_75, (Entrance.mine_to_skull_cavern_floor_100,)), + RegionData(RegionName.skull_cavern_100, (Entrance.mine_to_skull_cavern_floor_125,)), + RegionData(RegionName.skull_cavern_125, (Entrance.mine_to_skull_cavern_floor_150,)), + RegionData(RegionName.skull_cavern_150, (Entrance.mine_to_skull_cavern_floor_175,)), + RegionData(RegionName.skull_cavern_175, (Entrance.mine_to_skull_cavern_floor_200,)), + RegionData(RegionName.skull_cavern_200), + + RegionData(RegionName.coop), + RegionData(RegionName.barn), + RegionData(RegionName.shed), + RegionData(RegionName.slime_hutch), + + RegionData(RegionName.mines, (LogicEntrance.talk_to_mines_dwarf, Entrance.dig_to_mines_floor_5)), + RegionData(RegionName.mines_floor_5, (Entrance.dig_to_mines_floor_10,)), + RegionData(RegionName.mines_floor_10, (Entrance.dig_to_mines_floor_15,)), + RegionData(RegionName.mines_floor_15, (Entrance.dig_to_mines_floor_20,)), + RegionData(RegionName.mines_floor_20, (Entrance.dig_to_mines_floor_25,)), + RegionData(RegionName.mines_floor_25, (Entrance.dig_to_mines_floor_30,)), + RegionData(RegionName.mines_floor_30, (Entrance.dig_to_mines_floor_35,)), + RegionData(RegionName.mines_floor_35, (Entrance.dig_to_mines_floor_40,)), + RegionData(RegionName.mines_floor_40, (Entrance.dig_to_mines_floor_45,)), + RegionData(RegionName.mines_floor_45, (Entrance.dig_to_mines_floor_50,)), + RegionData(RegionName.mines_floor_50, (Entrance.dig_to_mines_floor_55,)), + RegionData(RegionName.mines_floor_55, (Entrance.dig_to_mines_floor_60,)), + RegionData(RegionName.mines_floor_60, (Entrance.dig_to_mines_floor_65,)), + RegionData(RegionName.mines_floor_65, (Entrance.dig_to_mines_floor_70,)), + RegionData(RegionName.mines_floor_70, (Entrance.dig_to_mines_floor_75,)), + RegionData(RegionName.mines_floor_75, (Entrance.dig_to_mines_floor_80,)), + RegionData(RegionName.mines_floor_80, (Entrance.dig_to_mines_floor_85,)), + RegionData(RegionName.mines_floor_85, (Entrance.dig_to_mines_floor_90,)), + RegionData(RegionName.mines_floor_90, (Entrance.dig_to_mines_floor_95,)), + RegionData(RegionName.mines_floor_95, (Entrance.dig_to_mines_floor_100,)), + RegionData(RegionName.mines_floor_100, (Entrance.dig_to_mines_floor_105,)), + RegionData(RegionName.mines_floor_105, (Entrance.dig_to_mines_floor_110,)), + RegionData(RegionName.mines_floor_110, (Entrance.dig_to_mines_floor_115,)), + RegionData(RegionName.mines_floor_115, (Entrance.dig_to_mines_floor_120,)), + RegionData(RegionName.mines_floor_120), + + RegionData(LogicRegion.mines_dwarf_shop), + RegionData(LogicRegion.blacksmith_copper, (LogicEntrance.blacksmith_iron,)), + RegionData(LogicRegion.blacksmith_iron, (LogicEntrance.blacksmith_gold,)), + RegionData(LogicRegion.blacksmith_gold, (LogicEntrance.blacksmith_iridium,)), + RegionData(LogicRegion.blacksmith_iridium), + RegionData(LogicRegion.kitchen), + RegionData(LogicRegion.queen_of_sauce), + RegionData(LogicRegion.fishing), + + RegionData(LogicRegion.spring_farming), + RegionData(LogicRegion.summer_farming, (LogicEntrance.grow_summer_fall_crops_in_summer,)), + RegionData(LogicRegion.fall_farming, (LogicEntrance.grow_summer_fall_crops_in_fall,)), + RegionData(LogicRegion.winter_farming), + RegionData(LogicRegion.summer_or_fall_farming), + RegionData(LogicRegion.indoor_farming), + + RegionData(LogicRegion.shipping), + RegionData(LogicRegion.traveling_cart, (LogicEntrance.buy_from_traveling_merchant_sunday, + LogicEntrance.buy_from_traveling_merchant_monday, + LogicEntrance.buy_from_traveling_merchant_tuesday, + LogicEntrance.buy_from_traveling_merchant_wednesday, + LogicEntrance.buy_from_traveling_merchant_thursday, + LogicEntrance.buy_from_traveling_merchant_friday, + LogicEntrance.buy_from_traveling_merchant_saturday)), + RegionData(LogicRegion.traveling_cart_sunday), + RegionData(LogicRegion.traveling_cart_monday), + RegionData(LogicRegion.traveling_cart_tuesday), + RegionData(LogicRegion.traveling_cart_wednesday), + RegionData(LogicRegion.traveling_cart_thursday), + RegionData(LogicRegion.traveling_cart_friday), + RegionData(LogicRegion.traveling_cart_saturday), + RegionData(LogicRegion.raccoon_daddy, (LogicEntrance.buy_from_raccoon,)), + RegionData(LogicRegion.raccoon_shop), + + RegionData(LogicRegion.egg_festival), + RegionData(LogicRegion.desert_festival), + RegionData(LogicRegion.flower_dance), + RegionData(LogicRegion.luau), + RegionData(LogicRegion.trout_derby), + RegionData(LogicRegion.moonlight_jellies), + RegionData(LogicRegion.fair), + RegionData(LogicRegion.spirit_eve), + RegionData(LogicRegion.festival_of_ice), + RegionData(LogicRegion.night_market), + RegionData(LogicRegion.winter_star), + RegionData(LogicRegion.squidfest), + RegionData(LogicRegion.bookseller_1, (LogicEntrance.buy_year1_books,)), + RegionData(LogicRegion.bookseller_2, (LogicEntrance.buy_year3_books,)), + RegionData(LogicRegion.bookseller_3), +) +ginger_island_regions = ( + # This overrides the regions from vanilla... When regions are moved to content packs, overriding existing entrances should no longer be necessary. + RegionData(RegionName.mountain, + (Entrance.mountain_to_railroad, Entrance.mountain_to_tent, Entrance.mountain_to_carpenter_shop, + Entrance.mountain_to_the_mines, Entrance.enter_quarry, Entrance.mountain_to_adventurer_guild, + Entrance.mountain_to_town, Entrance.mountain_to_maru_room, Entrance.mountain_to_leo_treehouse)), + RegionData(RegionName.wizard_tower, (Entrance.enter_wizard_basement, Entrance.use_desert_obelisk, Entrance.use_island_obelisk,)), + RegionData(RegionName.fish_shop, (Entrance.fish_shop_to_boat_tunnel,)), + RegionData(RegionName.mines_floor_120, (Entrance.dig_to_dangerous_mines_20, Entrance.dig_to_dangerous_mines_60, Entrance.dig_to_dangerous_mines_100)), + RegionData(RegionName.skull_cavern_200, (Entrance.enter_dangerous_skull_cavern,)), + + RegionData(RegionName.leo_treehouse), + RegionData(RegionName.boat_tunnel, (Entrance.boat_to_ginger_island,)), + RegionData(RegionName.dangerous_skull_cavern), + RegionData(RegionName.island_south, + (Entrance.island_south_to_west, Entrance.island_south_to_north, Entrance.island_south_to_east, Entrance.island_south_to_southeast, + Entrance.use_island_resort, Entrance.parrot_express_docks_to_volcano, Entrance.parrot_express_docks_to_dig_site, + Entrance.parrot_express_docks_to_jungle), ), + RegionData(RegionName.island_resort), + RegionData(RegionName.island_west, + (Entrance.island_west_to_islandfarmhouse, Entrance.island_west_to_gourmand_cave, Entrance.island_west_to_crystals_cave, + Entrance.island_west_to_shipwreck, Entrance.island_west_to_qi_walnut_room, Entrance.use_farm_obelisk, Entrance.parrot_express_jungle_to_docks, + Entrance.parrot_express_jungle_to_dig_site, Entrance.parrot_express_jungle_to_volcano, LogicEntrance.grow_spring_crops_on_island, + LogicEntrance.grow_summer_crops_on_island, LogicEntrance.grow_fall_crops_on_island, LogicEntrance.grow_winter_crops_on_island, + LogicEntrance.grow_indoor_crops_on_island), ), + RegionData(RegionName.island_east, (Entrance.island_east_to_leo_hut, Entrance.island_east_to_island_shrine)), + RegionData(RegionName.island_shrine), + RegionData(RegionName.island_south_east, (Entrance.island_southeast_to_pirate_cove,)), + RegionData(RegionName.island_north, + (Entrance.talk_to_island_trader, Entrance.island_north_to_field_office, Entrance.island_north_to_dig_site, Entrance.island_north_to_volcano, + Entrance.parrot_express_volcano_to_dig_site, Entrance.parrot_express_volcano_to_jungle, Entrance.parrot_express_volcano_to_docks), ), + RegionData(RegionName.volcano, (Entrance.climb_to_volcano_5, Entrance.volcano_to_secret_beach)), + RegionData(RegionName.volcano_secret_beach), + RegionData(RegionName.volcano_floor_5, (Entrance.talk_to_volcano_dwarf, Entrance.climb_to_volcano_10)), + RegionData(RegionName.volcano_dwarf_shop), + RegionData(RegionName.volcano_floor_10), + RegionData(RegionName.island_trader), + RegionData(RegionName.island_farmhouse, (LogicEntrance.island_cooking,)), + RegionData(RegionName.gourmand_frog_cave), + RegionData(RegionName.colored_crystals_cave), + RegionData(RegionName.shipwreck), + RegionData(RegionName.qi_walnut_room), + RegionData(RegionName.leo_hut), + RegionData(RegionName.pirate_cove), + RegionData(RegionName.field_office), + RegionData(RegionName.dig_site, + (Entrance.dig_site_to_professor_snail_cave, Entrance.parrot_express_dig_site_to_volcano, + Entrance.parrot_express_dig_site_to_docks, Entrance.parrot_express_dig_site_to_jungle), ), + + RegionData(RegionName.professor_snail_cave), + RegionData(RegionName.dangerous_mines_20), + RegionData(RegionName.dangerous_mines_60), + RegionData(RegionName.dangerous_mines_100), +) + +# Exists and where they lead +vanilla_connections: tuple[ConnectionData, ...] = ( + ConnectionData(Entrance.to_stardew_valley, RegionName.stardew_valley), + ConnectionData(Entrance.to_farmhouse, RegionName.farm_house), + ConnectionData(Entrance.farmhouse_to_farm, RegionName.farm), + ConnectionData(Entrance.downstairs_to_cellar, RegionName.cellar), + ConnectionData(Entrance.farm_to_backwoods, RegionName.backwoods), + ConnectionData(Entrance.farm_to_bus_stop, RegionName.bus_stop), + ConnectionData(Entrance.farm_to_forest, RegionName.forest), + ConnectionData(Entrance.farm_to_farmcave, RegionName.farm_cave, flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(Entrance.enter_greenhouse, RegionName.greenhouse), + ConnectionData(Entrance.enter_coop, RegionName.coop), + ConnectionData(Entrance.enter_barn, RegionName.barn), + ConnectionData(Entrance.enter_shed, RegionName.shed), + ConnectionData(Entrance.enter_slime_hutch, RegionName.slime_hutch), + ConnectionData(Entrance.use_desert_obelisk, RegionName.desert), + ConnectionData(Entrance.backwoods_to_mountain, RegionName.mountain), + ConnectionData(Entrance.bus_stop_to_town, RegionName.town), + ConnectionData(Entrance.bus_stop_to_tunnel_entrance, RegionName.tunnel_entrance), + ConnectionData(Entrance.tunnel_entrance_to_bus_tunnel, RegionName.bus_tunnel, flag=RandomizationFlag.NON_PROGRESSION), + ConnectionData(Entrance.take_bus_to_desert, RegionName.desert), + ConnectionData(Entrance.forest_to_town, RegionName.town), + ConnectionData(Entrance.forest_to_wizard_tower, RegionName.wizard_tower, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.forest_to_marnie_ranch, RegionName.ranch, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.forest_to_leah_cottage, RegionName.leah_house, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_secret_woods, RegionName.secret_woods), + ConnectionData(Entrance.forest_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), + # We remove the bit for masteries, because the mastery cave is to be excluded from the randomization if masteries are not shuffled. + ConnectionData(Entrance.forest_to_mastery_cave, RegionName.mastery_cave, flag=RandomizationFlag.BUILDINGS ^ RandomizationFlag.EXCLUDE_MASTERIES), + ConnectionData(Entrance.town_to_sewer, RegionName.sewer, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_mutant_bug_lair, RegionName.mutant_bug_lair, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.mountain_to_railroad, RegionName.railroad), + ConnectionData(Entrance.mountain_to_tent, RegionName.tent, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.mountain_to_carpenter_shop, RegionName.carpenter, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.mountain_to_maru_room, RegionName.maru_room, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_sebastian_room, RegionName.sebastian_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.mountain_to_adventurer_guild, RegionName.adventurer_guild, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.adventurer_guild_to_bedroom, RegionName.adventurer_guild_bedroom), + ConnectionData(Entrance.enter_quarry, RegionName.quarry), + ConnectionData(Entrance.enter_quarry_mine_entrance, RegionName.quarry_mine_entrance, + flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_quarry_mine, RegionName.quarry_mine), + ConnectionData(Entrance.mountain_to_town, RegionName.town), + ConnectionData(Entrance.town_to_community_center, RegionName.community_center, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.access_crafts_room, RegionName.crafts_room), + ConnectionData(Entrance.access_pantry, RegionName.pantry), + ConnectionData(Entrance.access_fish_tank, RegionName.fish_tank), + ConnectionData(Entrance.access_boiler_room, RegionName.boiler_room), + ConnectionData(Entrance.access_bulletin_board, RegionName.bulletin_board), + ConnectionData(Entrance.access_vault, RegionName.vault), + ConnectionData(Entrance.town_to_hospital, RegionName.hospital, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_harvey_room, RegionName.harvey_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.town_to_pierre_general_store, RegionName.pierre_store, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_sunroom, RegionName.sunroom, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.town_to_clint_blacksmith, RegionName.blacksmith, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_saloon, RegionName.saloon, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.play_journey_of_the_prairie_king, RegionName.jotpk_world_1), + ConnectionData(Entrance.reach_jotpk_world_2, RegionName.jotpk_world_2), + ConnectionData(Entrance.reach_jotpk_world_3, RegionName.jotpk_world_3), + ConnectionData(Entrance.play_junimo_kart, RegionName.junimo_kart_1), + ConnectionData(Entrance.reach_junimo_kart_2, RegionName.junimo_kart_2), + ConnectionData(Entrance.reach_junimo_kart_3, RegionName.junimo_kart_3), + ConnectionData(Entrance.reach_junimo_kart_4, RegionName.junimo_kart_4), + ConnectionData(Entrance.town_to_sam_house, RegionName.sam_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_haley_house, RegionName.haley_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_mayor_manor, RegionName.mayor_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_alex_house, RegionName.alex_house, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_trailer, RegionName.trailer, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_museum, RegionName.museum, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.town_to_jojamart, RegionName.jojamart, + flag=RandomizationFlag.PELICAN_TOWN | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.purchase_movie_ticket, RegionName.movie_ticket_stand), + ConnectionData(Entrance.enter_abandoned_jojamart, RegionName.abandoned_jojamart), + ConnectionData(Entrance.enter_movie_theater, RegionName.movie_theater), + ConnectionData(Entrance.town_to_beach, RegionName.beach), + ConnectionData(Entrance.enter_elliott_house, RegionName.elliott_house, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.beach_to_willy_fish_shop, RegionName.fish_shop, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_tide_pools, RegionName.tide_pools), + ConnectionData(Entrance.mountain_to_the_mines, RegionName.mines, + flag=RandomizationFlag.NON_PROGRESSION | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.dig_to_mines_floor_5, RegionName.mines_floor_5), + ConnectionData(Entrance.dig_to_mines_floor_10, RegionName.mines_floor_10), + ConnectionData(Entrance.dig_to_mines_floor_15, RegionName.mines_floor_15), + ConnectionData(Entrance.dig_to_mines_floor_20, RegionName.mines_floor_20), + ConnectionData(Entrance.dig_to_mines_floor_25, RegionName.mines_floor_25), + ConnectionData(Entrance.dig_to_mines_floor_30, RegionName.mines_floor_30), + ConnectionData(Entrance.dig_to_mines_floor_35, RegionName.mines_floor_35), + ConnectionData(Entrance.dig_to_mines_floor_40, RegionName.mines_floor_40), + ConnectionData(Entrance.dig_to_mines_floor_45, RegionName.mines_floor_45), + ConnectionData(Entrance.dig_to_mines_floor_50, RegionName.mines_floor_50), + ConnectionData(Entrance.dig_to_mines_floor_55, RegionName.mines_floor_55), + ConnectionData(Entrance.dig_to_mines_floor_60, RegionName.mines_floor_60), + ConnectionData(Entrance.dig_to_mines_floor_65, RegionName.mines_floor_65), + ConnectionData(Entrance.dig_to_mines_floor_70, RegionName.mines_floor_70), + ConnectionData(Entrance.dig_to_mines_floor_75, RegionName.mines_floor_75), + ConnectionData(Entrance.dig_to_mines_floor_80, RegionName.mines_floor_80), + ConnectionData(Entrance.dig_to_mines_floor_85, RegionName.mines_floor_85), + ConnectionData(Entrance.dig_to_mines_floor_90, RegionName.mines_floor_90), + ConnectionData(Entrance.dig_to_mines_floor_95, RegionName.mines_floor_95), + ConnectionData(Entrance.dig_to_mines_floor_100, RegionName.mines_floor_100), + ConnectionData(Entrance.dig_to_mines_floor_105, RegionName.mines_floor_105), + ConnectionData(Entrance.dig_to_mines_floor_110, RegionName.mines_floor_110), + ConnectionData(Entrance.dig_to_mines_floor_115, RegionName.mines_floor_115), + ConnectionData(Entrance.dig_to_mines_floor_120, RegionName.mines_floor_120), + ConnectionData(Entrance.enter_skull_cavern_entrance, RegionName.skull_cavern_entrance, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_oasis, RegionName.oasis, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_casino, RegionName.casino, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_skull_cavern, RegionName.skull_cavern), + ConnectionData(Entrance.mine_to_skull_cavern_floor_25, RegionName.skull_cavern_25), + ConnectionData(Entrance.mine_to_skull_cavern_floor_50, RegionName.skull_cavern_50), + ConnectionData(Entrance.mine_to_skull_cavern_floor_75, RegionName.skull_cavern_75), + ConnectionData(Entrance.mine_to_skull_cavern_floor_100, RegionName.skull_cavern_100), + ConnectionData(Entrance.mine_to_skull_cavern_floor_125, RegionName.skull_cavern_125), + ConnectionData(Entrance.mine_to_skull_cavern_floor_150, RegionName.skull_cavern_150), + ConnectionData(Entrance.mine_to_skull_cavern_floor_175, RegionName.skull_cavern_175), + ConnectionData(Entrance.mine_to_skull_cavern_floor_200, RegionName.skull_cavern_200), + ConnectionData(Entrance.enter_witch_warp_cave, RegionName.witch_warp_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_witch_swamp, RegionName.witch_swamp, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_witch_hut, RegionName.witch_hut, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.witch_warp_to_wizard_basement, RegionName.wizard_basement, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_bathhouse_entrance, RegionName.bathhouse_entrance, + flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.enter_locker_room, RegionName.locker_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.enter_public_bath, RegionName.public_bath, flag=RandomizationFlag.BUILDINGS), + ConnectionData(LogicEntrance.talk_to_mines_dwarf, LogicRegion.mines_dwarf_shop), + + ConnectionData(LogicEntrance.buy_from_traveling_merchant, LogicRegion.traveling_cart), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_sunday, LogicRegion.traveling_cart_sunday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_monday, LogicRegion.traveling_cart_monday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_tuesday, LogicRegion.traveling_cart_tuesday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_wednesday, LogicRegion.traveling_cart_wednesday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_thursday, LogicRegion.traveling_cart_thursday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_friday, LogicRegion.traveling_cart_friday), + ConnectionData(LogicEntrance.buy_from_traveling_merchant_saturday, LogicRegion.traveling_cart_saturday), + ConnectionData(LogicEntrance.complete_raccoon_requests, LogicRegion.raccoon_daddy), + ConnectionData(LogicEntrance.fish_in_waterfall, LogicRegion.forest_waterfall), + ConnectionData(LogicEntrance.buy_from_raccoon, LogicRegion.raccoon_shop), + ConnectionData(LogicEntrance.farmhouse_cooking, LogicRegion.kitchen), + ConnectionData(LogicEntrance.watch_queen_of_sauce, LogicRegion.queen_of_sauce), + + ConnectionData(LogicEntrance.grow_spring_crops, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_spring_crops_in_greenhouse, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops_in_greenhouse, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops_in_greenhouse, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops_in_greenhouse, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_indoor_crops_in_greenhouse, LogicRegion.indoor_farming), + ConnectionData(LogicEntrance.grow_summer_fall_crops_in_summer, LogicRegion.summer_or_fall_farming), + ConnectionData(LogicEntrance.grow_summer_fall_crops_in_fall, LogicRegion.summer_or_fall_farming), + + ConnectionData(LogicEntrance.shipping, LogicRegion.shipping), + ConnectionData(LogicEntrance.blacksmith_copper, LogicRegion.blacksmith_copper), + ConnectionData(LogicEntrance.blacksmith_iron, LogicRegion.blacksmith_iron), + ConnectionData(LogicEntrance.blacksmith_gold, LogicRegion.blacksmith_gold), + ConnectionData(LogicEntrance.blacksmith_iridium, LogicRegion.blacksmith_iridium), + ConnectionData(LogicEntrance.fishing, LogicRegion.fishing), + ConnectionData(LogicEntrance.attend_egg_festival, LogicRegion.egg_festival), + ConnectionData(LogicEntrance.attend_desert_festival, LogicRegion.desert_festival), + ConnectionData(LogicEntrance.attend_flower_dance, LogicRegion.flower_dance), + ConnectionData(LogicEntrance.attend_luau, LogicRegion.luau), + ConnectionData(LogicEntrance.attend_trout_derby, LogicRegion.trout_derby), + ConnectionData(LogicEntrance.attend_moonlight_jellies, LogicRegion.moonlight_jellies), + ConnectionData(LogicEntrance.attend_fair, LogicRegion.fair), + ConnectionData(LogicEntrance.attend_spirit_eve, LogicRegion.spirit_eve), + ConnectionData(LogicEntrance.attend_festival_of_ice, LogicRegion.festival_of_ice), + ConnectionData(LogicEntrance.attend_night_market, LogicRegion.night_market), + ConnectionData(LogicEntrance.attend_winter_star, LogicRegion.winter_star), + ConnectionData(LogicEntrance.attend_squidfest, LogicRegion.squidfest), + ConnectionData(LogicEntrance.buy_experience_books, LogicRegion.bookseller_1), + ConnectionData(LogicEntrance.buy_year1_books, LogicRegion.bookseller_2), + ConnectionData(LogicEntrance.buy_year3_books, LogicRegion.bookseller_3), +) + +ginger_island_connections = ( + ConnectionData(Entrance.use_island_obelisk, RegionName.island_south), + ConnectionData(Entrance.use_farm_obelisk, RegionName.farm), + ConnectionData(Entrance.mountain_to_leo_treehouse, RegionName.leo_treehouse, flag=RandomizationFlag.BUILDINGS | RandomizationFlag.LEAD_TO_OPEN_AREA), + ConnectionData(Entrance.fish_shop_to_boat_tunnel, RegionName.boat_tunnel, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.boat_to_ginger_island, RegionName.island_south), + ConnectionData(Entrance.enter_dangerous_skull_cavern, RegionName.dangerous_skull_cavern), + ConnectionData(Entrance.dig_to_dangerous_mines_20, RegionName.dangerous_mines_20), + ConnectionData(Entrance.dig_to_dangerous_mines_60, RegionName.dangerous_mines_60), + ConnectionData(Entrance.dig_to_dangerous_mines_100, RegionName.dangerous_mines_100), + ConnectionData(Entrance.island_south_to_west, RegionName.island_west), + ConnectionData(Entrance.island_south_to_north, RegionName.island_north), + ConnectionData(Entrance.island_south_to_east, RegionName.island_east), + ConnectionData(Entrance.island_south_to_southeast, RegionName.island_south_east), + ConnectionData(Entrance.use_island_resort, RegionName.island_resort), + ConnectionData(Entrance.island_west_to_islandfarmhouse, RegionName.island_farmhouse, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_gourmand_cave, RegionName.gourmand_frog_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_crystals_cave, RegionName.colored_crystals_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_shipwreck, RegionName.shipwreck, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_west_to_qi_walnut_room, RegionName.qi_walnut_room, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_east_to_leo_hut, RegionName.leo_hut, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_east_to_island_shrine, RegionName.island_shrine, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_southeast_to_pirate_cove, RegionName.pirate_cove, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_field_office, RegionName.field_office, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.dig_site_to_professor_snail_cave, RegionName.professor_snail_cave, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.island_north_to_volcano, RegionName.volcano, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.volcano_to_secret_beach, RegionName.volcano_secret_beach, flag=RandomizationFlag.BUILDINGS), + ConnectionData(Entrance.talk_to_island_trader, RegionName.island_trader), + ConnectionData(Entrance.climb_to_volcano_5, RegionName.volcano_floor_5), + ConnectionData(Entrance.talk_to_volcano_dwarf, RegionName.volcano_dwarf_shop), + ConnectionData(Entrance.climb_to_volcano_10, RegionName.volcano_floor_10), + ConnectionData(Entrance.parrot_express_jungle_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_dig_site_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_volcano_to_docks, RegionName.island_south), + ConnectionData(Entrance.parrot_express_volcano_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_docks_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_dig_site_to_jungle, RegionName.island_west), + ConnectionData(Entrance.parrot_express_docks_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_volcano_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_jungle_to_dig_site, RegionName.dig_site), + ConnectionData(Entrance.parrot_express_dig_site_to_volcano, RegionName.island_north), + ConnectionData(Entrance.parrot_express_docks_to_volcano, RegionName.island_north), + ConnectionData(Entrance.parrot_express_jungle_to_volcano, RegionName.island_north), + ConnectionData(LogicEntrance.grow_spring_crops_on_island, LogicRegion.spring_farming), + ConnectionData(LogicEntrance.grow_summer_crops_on_island, LogicRegion.summer_farming), + ConnectionData(LogicEntrance.grow_fall_crops_on_island, LogicRegion.fall_farming), + ConnectionData(LogicEntrance.grow_winter_crops_on_island, LogicRegion.winter_farming), + ConnectionData(LogicEntrance.grow_indoor_crops_on_island, LogicRegion.indoor_farming), + ConnectionData(LogicEntrance.island_cooking, LogicRegion.kitchen), +) + +connections_without_ginger_island_by_name: Mapping[str, ConnectionData] = MappingProxyType({ + connection.name: connection + for connection in vanilla_connections +}) +regions_without_ginger_island_by_name: Mapping[str, RegionData] = MappingProxyType({ + region.name: region + for region in vanilla_regions +}) + +connections_with_ginger_island_by_name: Mapping[str, ConnectionData] = MappingProxyType({ + connection.name: connection + for connection in vanilla_connections + ginger_island_connections +}) +regions_with_ginger_island_by_name: Mapping[str, RegionData] = MappingProxyType({ + region.name: region + for region in vanilla_regions + ginger_island_regions +}) diff --git a/worlds/stardew_valley/rules.py b/worlds/stardew_valley/rules.py index 4257f856c83d..350da064a103 100644 --- a/worlds/stardew_valley/rules.py +++ b/worlds/stardew_valley/rules.py @@ -195,6 +195,7 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S set_entrance_rule(multiworld, player, Entrance.enter_tide_pools, logic.received("Beach Bridge") | (logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_quarry, logic.received("Bridge Repair") | (logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_secret_woods, logic.tool.has_tool(Tool.axe, "Iron") | (logic.mod.magic.can_blink())) + set_entrance_rule(multiworld, player, Entrance.forest_to_wizard_tower, logic.region.can_reach(Region.community_center)) set_entrance_rule(multiworld, player, Entrance.forest_to_sewer, logic.wallet.has_rusty_key()) set_entrance_rule(multiworld, player, Entrance.town_to_sewer, logic.wallet.has_rusty_key()) set_entrance_rule(multiworld, player, Entrance.enter_abandoned_jojamart, logic.has_abandoned_jojamart()) @@ -214,7 +215,7 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S set_entrance_rule(multiworld, player, Entrance.mountain_to_railroad, logic.received("Railroad Boulder Removed")) set_entrance_rule(multiworld, player, Entrance.enter_witch_warp_cave, logic.quest.has_dark_talisman() | (logic.mod.magic.can_blink())) - set_entrance_rule(multiworld, player, Entrance.enter_witch_hut, (logic.has(ArtisanGood.void_mayonnaise) | logic.mod.magic.can_blink())) + set_entrance_rule(multiworld, player, Entrance.enter_witch_hut, (logic.quest.can_complete_quest(Quest.goblin_problem) | logic.mod.magic.can_blink())) set_entrance_rule(multiworld, player, Entrance.enter_mutant_bug_lair, (logic.wallet.has_rusty_key() & logic.region.can_reach(Region.railroad) & logic.relationship.can_meet( NPC.krobus)) | logic.mod.magic.can_blink()) @@ -284,7 +285,7 @@ def set_skull_cavern_floor_entrance_rules(logic, multiworld, player): set_entrance_rule(multiworld, player, dig_to_skull_floor(floor), rule) -def set_skill_entrance_rules(logic, multiworld, player, world_options: StardewValleyOptions): +def set_skill_entrance_rules(logic: StardewLogic, multiworld, player, world_options: StardewValleyOptions): set_entrance_rule(multiworld, player, LogicEntrance.grow_spring_crops, logic.farming.has_farming_tools & logic.season.has_spring) set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_crops, logic.farming.has_farming_tools & logic.season.has_summer) set_entrance_rule(multiworld, player, LogicEntrance.grow_fall_crops, logic.farming.has_farming_tools & logic.season.has_fall) @@ -299,7 +300,7 @@ def set_skill_entrance_rules(logic, multiworld, player, world_options: StardewVa set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_fall_crops_in_summer, true_) set_entrance_rule(multiworld, player, LogicEntrance.grow_summer_fall_crops_in_fall, true_) - set_entrance_rule(multiworld, player, LogicEntrance.fishing, logic.skill.can_get_fishing_xp) + set_entrance_rule(multiworld, player, LogicEntrance.fishing, logic.fishing.can_fish_anywhere()) def set_blacksmith_entrance_rules(logic, multiworld, player): @@ -864,7 +865,7 @@ def set_friendsanity_rules(logic: StardewLogic, multiworld: MultiWorld, player: if not content.features.friendsanity.is_enabled: return set_rule(multiworld.get_location("Spouse Stardrop", player), - logic.relationship.has_hearts_with_any_bachelor(13)) + logic.relationship.has_hearts_with_any_bachelor(13) & logic.relationship.can_get_married()) set_rule(multiworld.get_location("Have a Baby", player), logic.relationship.can_reproduce(1)) set_rule(multiworld.get_location("Have Another Baby", player), @@ -923,9 +924,9 @@ def set_magic_spell_rules(logic: StardewLogic, multiworld: MultiWorld, player: i set_rule(multiworld.get_location("Analyze: Fireball", player), logic.has("Fire Quartz")) set_rule(multiworld.get_location("Analyze: Frostbolt", player), - logic.region.can_reach(Region.mines_floor_60) & logic.skill.can_fish(difficulty=85)) + logic.region.can_reach(Region.mines_floor_60) & logic.fishing.can_fish(85)) set_rule(multiworld.get_location("Analyze All Elemental School Locations", player), - logic.has("Fire Quartz") & logic.region.can_reach(Region.mines_floor_60) & logic.skill.can_fish(difficulty=85)) + logic.has("Fire Quartz") & logic.region.can_reach(Region.mines_floor_60) & logic.fishing.can_fish(85)) # set_rule(multiworld.get_location("Analyze: Lantern", player),) set_rule(multiworld.get_location("Analyze: Tendrils", player), logic.region.can_reach(Region.farm)) @@ -948,7 +949,7 @@ def set_magic_spell_rules(logic: StardewLogic, multiworld: MultiWorld, player: i & (logic.tool.has_tool("Axe", "Basic") | logic.tool.has_tool("Pickaxe", "Basic")) & logic.has("Coffee") & logic.has("Life Elixir") & logic.ability.can_mine_perfectly() & logic.has("Earth Crystal") & - logic.has("Fire Quartz") & logic.skill.can_fish(difficulty=85) & + logic.has("Fire Quartz") & logic.fishing.can_fish(85) & logic.region.can_reach(Region.witch_hut) & logic.region.can_reach(Region.mines_floor_100) & logic.region.can_reach(Region.farm) & logic.time.has_lived_months(12))) diff --git a/worlds/stardew_valley/strings/monster_drop_names.py b/worlds/stardew_valley/strings/monster_drop_names.py index df2cacf0c6aa..8612b3c7b52c 100644 --- a/worlds/stardew_valley/strings/monster_drop_names.py +++ b/worlds/stardew_valley/strings/monster_drop_names.py @@ -1,9 +1,4 @@ class Loot: - blue_slime_egg = "Blue Slime Egg" - red_slime_egg = "Red Slime Egg" - purple_slime_egg = "Purple Slime Egg" - green_slime_egg = "Green Slime Egg" - tiger_slime_egg = "Tiger Slime Egg" slime = "Slime" bug_meat = "Bug Meat" bat_wing = "Bat Wing" diff --git a/worlds/stardew_valley/test/TestBackpack.py b/worlds/stardew_valley/test/TestBackpack.py index 378c90e40a7f..bccafd15e55f 100644 --- a/worlds/stardew_valley/test/TestBackpack.py +++ b/worlds/stardew_valley/test/TestBackpack.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestBooksanity.py b/worlds/stardew_valley/test/TestBooksanity.py index c25924aa3b62..f1678de0db16 100644 --- a/worlds/stardew_valley/test/TestBooksanity.py +++ b/worlds/stardew_valley/test/TestBooksanity.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from ..options import ExcludeGingerIsland, Booksanity, Shipsanity from ..strings.book_names import Book, LostBook diff --git a/worlds/stardew_valley/test/TestBundles.py b/worlds/stardew_valley/test/TestBundles.py index 091f39b2568e..5b70158f5f54 100644 --- a/worlds/stardew_valley/test/TestBundles.py +++ b/worlds/stardew_valley/test/TestBundles.py @@ -1,6 +1,6 @@ import unittest -from . import SVTestBase +from .bases import SVTestBase from .. import BundleRandomization from ..data.bundle_data import all_bundle_items_except_money, quality_crops_items_thematic, quality_foraging_items, quality_fish_items from ..options import BundlePlando @@ -87,4 +87,3 @@ def test_all_plando_bundles_are_there(self): for bundle_name in self.fish_bundle_names: with self.subTest(f"{bundle_name}"): self.assertIn(bundle_name, location_names) - diff --git a/worlds/stardew_valley/test/TestCrops.py b/worlds/stardew_valley/test/TestCrops.py index 53048259ab0e..bf8f4f719e8a 100644 --- a/worlds/stardew_valley/test/TestCrops.py +++ b/worlds/stardew_valley/test/TestCrops.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options from ..strings.ap_names.transport_names import Transportation from ..strings.building_names import Building diff --git a/worlds/stardew_valley/test/TestDynamicGoals.py b/worlds/stardew_valley/test/TestDynamicGoals.py index b0e6d6c62655..23f453e9f073 100644 --- a/worlds/stardew_valley/test/TestDynamicGoals.py +++ b/worlds/stardew_valley/test/TestDynamicGoals.py @@ -1,7 +1,7 @@ from typing import List, Tuple -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options, StardewItem from ..strings.ap_names.ap_weapon_names import APWeapon from ..strings.ap_names.transport_names import Transportation diff --git a/worlds/stardew_valley/test/TestFarmType.py b/worlds/stardew_valley/test/TestFarmType.py index 1bb4404ae61f..2c4fe4ec36d2 100644 --- a/worlds/stardew_valley/test/TestFarmType.py +++ b/worlds/stardew_valley/test/TestFarmType.py @@ -1,7 +1,7 @@ from collections import Counter -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options @@ -13,7 +13,7 @@ class TestStartInventoryStandardFarm(WorldAssertMixin, SVTestBase): def test_start_inventory_progressive_coops(self): start_items = Counter((i.name for i in self.multiworld.precollected_items[self.player])) items = Counter((i.name for i in self.multiworld.itempool)) - + self.assertIn("Progressive Coop", items) self.assertEqual(items["Progressive Coop"], 3) self.assertNotIn("Progressive Coop", start_items) diff --git a/worlds/stardew_valley/test/TestFill.py b/worlds/stardew_valley/test/TestFill.py index f8565f4f218d..2205c49cdfbb 100644 --- a/worlds/stardew_valley/test/TestFill.py +++ b/worlds/stardew_valley/test/TestFill.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .options.presets import minimal_locations_maximal_items from .. import options from ..mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/TestFishsanity.py b/worlds/stardew_valley/test/TestFishsanity.py index c5d87c0f8dd7..953255c4d077 100644 --- a/worlds/stardew_valley/test/TestFishsanity.py +++ b/worlds/stardew_valley/test/TestFishsanity.py @@ -1,8 +1,8 @@ import unittest from typing import ClassVar, Set -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from ..content.feature import fishsanity from ..mods.mod_data import ModNames from ..options import Fishsanity, ExcludeGingerIsland, Mods, SpecialOrderLocations, Goal, QuestLocations diff --git a/worlds/stardew_valley/test/TestFriendsanity.py b/worlds/stardew_valley/test/TestFriendsanity.py index 842c0edd0980..a346df7d2aec 100644 --- a/worlds/stardew_valley/test/TestFriendsanity.py +++ b/worlds/stardew_valley/test/TestFriendsanity.py @@ -2,7 +2,7 @@ from collections import Counter from typing import ClassVar, Set -from . import SVTestBase +from .bases import SVTestBase from ..content.feature import friendsanity from ..options import Friendsanity, FriendsanityHeartSize diff --git a/worlds/stardew_valley/test/TestGeneration.py b/worlds/stardew_valley/test/TestGeneration.py index 77092c78fcae..5e60f8e80abb 100644 --- a/worlds/stardew_valley/test/TestGeneration.py +++ b/worlds/stardew_valley/test/TestGeneration.py @@ -1,9 +1,9 @@ from typing import List from BaseClasses import ItemClassification, Item -from . import SVTestBase -from .. import items, location_table, options -from ..items import Group, ItemData +from .bases import SVTestBase +from .. import location_table, options, items +from ..items import Group, ItemData, item_data from ..locations import LocationTags from ..options import Friendsanity, SpecialOrderLocations, Shipsanity, Chefsanity, SeasonRandomization, Craftsanity, ExcludeGingerIsland, SkillProgression, \ Booksanity, Walnutsanity @@ -15,10 +15,10 @@ def get_all_permanent_progression_items() -> List[ItemData]: """ return [ item - for item in items.all_items + for item in item_data.all_items if ItemClassification.progression in item.classification if item.mod_name is None - if item.name not in {event.name for event in items.events} + if item.name not in {event.name for event in item_data.events} if item.name not in {deprecated.name for deprecated in items.items_by_group[Group.DEPRECATED]} if item.name not in {season.name for season in items.items_by_group[Group.SEASON]} if item.name not in {weapon.name for weapon in items.items_by_group[Group.WEAPON]} @@ -54,19 +54,19 @@ def test_creates_as_many_item_as_non_event_locations(self): def test_does_not_create_deprecated_items(self): all_created_items = set(self.get_all_created_items()) - for deprecated_item in items.items_by_group[items.Group.DEPRECATED]: + for deprecated_item in item_data.items_by_group[item_data.Group.DEPRECATED]: with self.subTest(f"{deprecated_item.name}"): self.assertNotIn(deprecated_item.name, all_created_items) def test_does_not_create_more_than_one_maximum_one_items(self): all_created_items = self.get_all_created_items() - for maximum_one_item in items.items_by_group[items.Group.MAXIMUM_ONE]: + for maximum_one_item in item_data.items_by_group[item_data.Group.MAXIMUM_ONE]: with self.subTest(f"{maximum_one_item.name}"): self.assertLessEqual(all_created_items.count(maximum_one_item.name), 1) def test_does_not_create_or_create_two_of_exactly_two_items(self): all_created_items = self.get_all_created_items() - for exactly_two_item in items.items_by_group[items.Group.AT_LEAST_TWO]: + for exactly_two_item in item_data.items_by_group[item_data.Group.AT_LEAST_TWO]: with self.subTest(f"{exactly_two_item.name}"): count = all_created_items.count(exactly_two_item.name) self.assertTrue(count == 0 or count == 2) @@ -102,183 +102,24 @@ def test_creates_as_many_item_as_non_event_locations(self): def test_does_not_create_deprecated_items(self): all_created_items = self.get_all_created_items() - for deprecated_item in items.items_by_group[items.Group.DEPRECATED]: + for deprecated_item in item_data.items_by_group[item_data.Group.DEPRECATED]: with self.subTest(f"Deprecated item: {deprecated_item.name}"): self.assertNotIn(deprecated_item.name, all_created_items) def test_does_not_create_more_than_one_maximum_one_items(self): all_created_items = self.get_all_created_items() - for maximum_one_item in items.items_by_group[items.Group.MAXIMUM_ONE]: + for maximum_one_item in item_data.items_by_group[item_data.Group.MAXIMUM_ONE]: with self.subTest(f"{maximum_one_item.name}"): self.assertLessEqual(all_created_items.count(maximum_one_item.name), 1) def test_does_not_create_exactly_two_items(self): all_created_items = self.get_all_created_items() - for exactly_two_item in items.items_by_group[items.Group.AT_LEAST_TWO]: + for exactly_two_item in item_data.items_by_group[item_data.Group.AT_LEAST_TWO]: with self.subTest(f"{exactly_two_item.name}"): count = all_created_items.count(exactly_two_item.name) self.assertTrue(count == 0 or count == 2) -class TestMonstersanityNone(SVTestBase): - options = { - options.Monstersanity.internal_name: options.Monstersanity.option_none, - # Not really necessary, but it adds more locations, so we don't have to remove useful items. - options.Fishsanity.internal_name: options.Fishsanity.option_all - } - - @property - def run_default_tests(self) -> bool: - # None is default - return False - - def test_when_generate_world_then_5_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 5) - - def test_when_generate_world_then_zero_specific_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 0) - self.assertEqual(item_pool.count("Progressive Club"), 0) - self.assertEqual(item_pool.count("Progressive Dagger"), 0) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_3_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 3) - - -class TestMonstersanityGoals(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanityOnePerCategory(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_one_per_category} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanityProgressive(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_progressive_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_many_rings_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertIn("Hot Java Ring", item_pool) - self.assertIn("Wedding Ring", item_pool) - self.assertIn("Slime Charmer Ring", item_pool) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - -class TestMonstersanitySplit(SVTestBase): - options = {options.Monstersanity.internal_name: options.Monstersanity.option_split_goals} - - def test_when_generate_world_then_no_generic_weapons_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Weapon"), 0) - - def test_when_generate_world_then_5_specific_weapons_of_each_type_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Sword"), 5) - self.assertEqual(item_pool.count("Progressive Club"), 5) - self.assertEqual(item_pool.count("Progressive Dagger"), 5) - - def test_when_generate_world_then_2_slingshots_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Slingshot"), 2) - - def test_when_generate_world_then_4_shoes_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertEqual(item_pool.count("Progressive Footwear"), 4) - - def test_when_generate_world_then_many_rings_in_the_pool(self): - item_pool = [item.name for item in self.multiworld.itempool] - self.assertIn("Hot Java Ring", item_pool) - self.assertIn("Wedding Ring", item_pool) - self.assertIn("Slime Charmer Ring", item_pool) - - def test_when_generate_world_then_all_monster_checks_are_inaccessible(self): - for location in self.get_real_locations(): - if LocationTags.MONSTERSANITY not in location_table[location.name].tags: - continue - with self.subTest(location.name): - self.assertFalse(location.can_reach(self.multiworld.state)) - - class TestProgressiveElevator(SVTestBase): options = { options.ElevatorProgression.internal_name: options.ElevatorProgression.option_progressive, diff --git a/worlds/stardew_valley/test/TestItemLink.py b/worlds/stardew_valley/test/TestItemLink.py index 3a0d976511f7..c3029b60704d 100644 --- a/worlds/stardew_valley/test/TestItemLink.py +++ b/worlds/stardew_valley/test/TestItemLink.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import options, item_table, Group max_iterations = 2000 @@ -6,7 +6,7 @@ class TestItemLinksEverythingIncluded(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_medium} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium} def test_filler_of_all_types_generated(self): max_number_filler = 114 @@ -33,7 +33,7 @@ def test_filler_of_all_types_generated(self): class TestItemLinksNoIsland(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_medium} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium} def test_filler_has_no_island_but_has_traps(self): max_number_filler = 109 @@ -57,7 +57,7 @@ def test_filler_has_no_island_but_has_traps(self): class TestItemLinksNoTraps(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.TrapItems.internal_name: options.TrapItems.option_no_traps} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps} def test_filler_has_no_traps_but_has_island(self): max_number_filler = 99 @@ -81,7 +81,7 @@ def test_filler_has_no_traps_but_has_island(self): class TestItemLinksNoTrapsAndIsland(SVTestBase): options = {options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_true, - options.TrapItems.internal_name: options.TrapItems.option_no_traps} + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps} def test_filler_generated_without_island_or_traps(self): max_number_filler = 94 diff --git a/worlds/stardew_valley/test/TestItems.py b/worlds/stardew_valley/test/TestItems.py index 1d6f9689553b..d4fa9e832a8e 100644 --- a/worlds/stardew_valley/test/TestItems.py +++ b/worlds/stardew_valley/test/TestItems.py @@ -1,5 +1,5 @@ from BaseClasses import MultiWorld, get_seed, ItemClassification -from . import setup_solo_multiworld, SVTestCase, solo_multiworld +from .bases import SVTestCase, solo_multiworld, setup_solo_multiworld from .options.presets import allsanity_no_mods_6_x_x, get_minsanity_options from .. import StardewValleyWorld from ..items import Group, item_table diff --git a/worlds/stardew_valley/test/TestLogic.py b/worlds/stardew_valley/test/TestLogic.py index 7a6b81ea7402..047e0226c6e0 100644 --- a/worlds/stardew_valley/test/TestLogic.py +++ b/worlds/stardew_valley/test/TestLogic.py @@ -3,8 +3,8 @@ from unittest import TestCase, SkipTest from BaseClasses import MultiWorld -from . import setup_solo_multiworld from .assertion import RuleAssertMixin +from .bases import setup_solo_multiworld from .options.presets import allsanity_mods_6_x_x, minimal_locations_maximal_items from .. import StardewValleyWorld from ..data.bundle_data import all_bundle_items_except_money diff --git a/worlds/stardew_valley/test/TestMonstersanity.py b/worlds/stardew_valley/test/TestMonstersanity.py new file mode 100644 index 000000000000..dd058274326f --- /dev/null +++ b/worlds/stardew_valley/test/TestMonstersanity.py @@ -0,0 +1,132 @@ +import unittest +from typing import ClassVar + +from .bases import SVTestBase +from .. import options +from ..locations import LocationTags, location_table +from ..mods.mod_data import ModNames + + +class SVMonstersanityTestBase(SVTestBase): + expected_progressive_generic_weapon: ClassVar[int] = 0 + expected_progressive_specific_weapon: ClassVar[int] = 0 + expected_progressive_slingshot: ClassVar[int] = 0 + expected_progressive_footwear: ClassVar[int] = 0 + expected_rings: ClassVar[list[str]] = [] + + @classmethod + def setUpClass(cls) -> None: + if cls is SVMonstersanityTestBase: + raise unittest.SkipTest("Base tests disabled") + + super().setUpClass() + + def test_when_generate_world_then_expected_generic_weapons_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Weapon"), self.expected_progressive_generic_weapon) + + def test_when_generate_world_then_expected_specific_weapons_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Sword"), self.expected_progressive_specific_weapon) + self.assertEqual(item_pool.count("Progressive Club"), self.expected_progressive_specific_weapon) + self.assertEqual(item_pool.count("Progressive Dagger"), self.expected_progressive_specific_weapon) + + def test_when_generate_world_then_expected_slingshots_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Slingshot"), self.expected_progressive_slingshot) + + def test_when_generate_world_then_expected_shoes_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + self.assertEqual(item_pool.count("Progressive Footwear"), self.expected_progressive_footwear) + + def test_when_generate_world_then_many_rings_in_the_pool(self): + item_pool = [item.name for item in self.multiworld.itempool] + for expected_ring in self.expected_rings: + self.assertIn(expected_ring, item_pool) + + def test_when_generate_world_then_all_monster_checks_are_inaccessible_with_empty_inventory(self): + for location in self.get_real_locations(): + if LocationTags.MONSTERSANITY not in location_table[location.name].tags: + continue + with self.subTest(location.name): + self.assert_cannot_reach_location(location.name) + + +class TestMonstersanityNone(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_none, + # Not really necessary, but it adds more locations, so we don't have to remove useful items. + options.Fishsanity: options.Fishsanity.option_all, + } + expected_progressive_generic_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 3 + + @property + def run_default_tests(self) -> bool: + # None is default + return False + + +class TestMonstersanityNoneWithSVE(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_none, + options.Mods: ModNames.sve, + } + expected_progressive_generic_weapon = 6 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 3 + + @property + def run_default_tests(self) -> bool: + # None is default + return False + + +class TestMonstersanityGoals(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + + +class TestMonstersanityOnePerCategory(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_one_per_category, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + + +class TestMonstersanityProgressive(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_progressive_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] + + +class TestMonstersanitySplit(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_split_goals, + } + expected_progressive_specific_weapon = 5 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] + + +class TestMonstersanitySplitWithSVE(SVMonstersanityTestBase): + options = { + options.Monstersanity: options.Monstersanity.option_split_goals, + options.Mods: ModNames.sve, + } + expected_progressive_specific_weapon = 6 + expected_progressive_slingshot = 2 + expected_progressive_footwear = 4 + expected_rings = ["Hot Java Ring", "Wedding Ring", "Slime Charmer Ring"] diff --git a/worlds/stardew_valley/test/TestMultiplePlayers.py b/worlds/stardew_valley/test/TestMultiplePlayers.py index d8db616f66f4..3b5710559548 100644 --- a/worlds/stardew_valley/test/TestMultiplePlayers.py +++ b/worlds/stardew_valley/test/TestMultiplePlayers.py @@ -1,4 +1,4 @@ -from . import SVTestCase, setup_multiworld +from .bases import SVTestCase, setup_multiworld from .. import True_ from ..options import FestivalLocations, StartingMoney from ..strings.festival_check_names import FestivalCheck diff --git a/worlds/stardew_valley/test/TestNumberLocations.py b/worlds/stardew_valley/test/TestNumberLocations.py index 2ed528086ab8..dd57a5e39b7b 100644 --- a/worlds/stardew_valley/test/TestNumberLocations.py +++ b/worlds/stardew_valley/test/TestNumberLocations.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .options.presets import default_6_x_x, allsanity_no_mods_6_x_x, allsanity_mods_6_x_x_exclude_disabled, get_minsanity_options, \ minimal_locations_maximal_items, minimal_locations_maximal_items_with_island from .. import location_table diff --git a/worlds/stardew_valley/test/TestOptionFlags.py b/worlds/stardew_valley/test/TestOptionFlags.py index 2833649e35fa..d93015756486 100644 --- a/worlds/stardew_valley/test/TestOptionFlags.py +++ b/worlds/stardew_valley/test/TestOptionFlags.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from .. import BuildingProgression from ..options import ToolProgression diff --git a/worlds/stardew_valley/test/TestOptions.py b/worlds/stardew_valley/test/TestOptions.py index 4894ea55f241..738753fe8362 100644 --- a/worlds/stardew_valley/test/TestOptions.py +++ b/worlds/stardew_valley/test/TestOptions.py @@ -3,13 +3,13 @@ from BaseClasses import ItemClassification from test.param import classvar_matrix -from . import SVTestCase, solo_multiworld, SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestCase, SVTestBase, solo_multiworld from .options.option_names import all_option_choices from .options.presets import allsanity_no_mods_6_x_x, allsanity_mods_6_x_x from .. import items_by_group, Group from ..locations import locations_by_tag, LocationTags, location_table -from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapItems, SpecialOrderLocations, ArcadeMachineLocations +from ..options import ExcludeGingerIsland, ToolProgression, Goal, SeasonRandomization, TrapDifficulty, SpecialOrderLocations, ArcadeMachineLocations from ..strings.goal_names import Goal as GoalName from ..strings.season_names import Season from ..strings.special_order_names import SpecialOrder @@ -126,7 +126,7 @@ def test_given_choice_when_generate_exclude_ginger_island_then_ginger_island_is_ class TestTraps(SVTestCase): def test_given_no_traps_when_generate_then_no_trap_in_pool(self): world_options = allsanity_no_mods_6_x_x().copy() - world_options[TrapItems.internal_name] = TrapItems.option_no_traps + world_options[TrapDifficulty.internal_name] = TrapDifficulty.option_no_traps with solo_multiworld(world_options) as (multi_world, _): trap_items = [item_data.name for item_data in items_by_group[Group.TRAP]] multiworld_items = [item.name for item in multi_world.get_items()] @@ -136,12 +136,12 @@ def test_given_no_traps_when_generate_then_no_trap_in_pool(self): self.assertNotIn(item, multiworld_items) def test_given_traps_when_generate_then_all_traps_in_pool(self): - trap_option = TrapItems + trap_option = TrapDifficulty for value in trap_option.options: if value == "no_traps": continue world_options = allsanity_mods_6_x_x() - world_options.update({TrapItems.internal_name: trap_option.options[value]}) + world_options.update({TrapDifficulty.internal_name: trap_option.options[value]}) with solo_multiworld(world_options) as (multi_world, _): trap_items = [item_data.name for item_data in items_by_group[Group.TRAP] if Group.DEPRECATED not in item_data.groups and item_data.mod_name is None] diff --git a/worlds/stardew_valley/test/TestOptionsPairs.py b/worlds/stardew_valley/test/TestOptionsPairs.py index d489ab1ff282..addd748c424c 100644 --- a/worlds/stardew_valley/test/TestOptionsPairs.py +++ b/worlds/stardew_valley/test/TestOptionsPairs.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestRandomWorlds.py b/worlds/stardew_valley/test/TestRandomWorlds.py index 550ae14b5520..0c4ad6ae2999 100644 --- a/worlds/stardew_valley/test/TestRandomWorlds.py +++ b/worlds/stardew_valley/test/TestRandomWorlds.py @@ -2,8 +2,8 @@ from BaseClasses import MultiWorld, get_seed from test.param import classvar_matrix -from . import SVTestCase, skip_long_tests, solo_multiworld from .assertion import GoalAssertMixin, OptionAssertMixin, WorldAssertMixin +from .bases import skip_long_tests, SVTestCase, solo_multiworld from .options.option_names import generate_random_world_options diff --git a/worlds/stardew_valley/test/TestRegions.py b/worlds/stardew_valley/test/TestRegions.py deleted file mode 100644 index bd1b67297473..000000000000 --- a/worlds/stardew_valley/test/TestRegions.py +++ /dev/null @@ -1,173 +0,0 @@ -import random -import unittest -from typing import Set - -from BaseClasses import get_seed -from . import SVTestCase -from .options.utils import fill_dataclass_with_default -from .. import create_content -from ..options import EntranceRandomization, ExcludeGingerIsland, SkillProgression -from ..regions import vanilla_regions, vanilla_connections, randomize_connections, RandomizationFlag, create_final_connections_and_regions -from ..strings.entrance_names import Entrance as EntranceName -from ..strings.region_names import Region as RegionName - -connections_by_name = {connection.name for connection in vanilla_connections} -regions_by_name = {region.name for region in vanilla_regions} - - -class TestRegions(unittest.TestCase): - def test_region_exits_lead_somewhere(self): - for region in vanilla_regions: - with self.subTest(region=region): - for exit in region.exits: - self.assertIn(exit, connections_by_name, - f"{region.name} is leading to {exit} but it does not exist.") - - def test_connection_lead_somewhere(self): - for connection in vanilla_connections: - with self.subTest(connection=connection): - self.assertIn(connection.destination, regions_by_name, - f"{connection.name} is leading to {connection.destination} but it does not exist.") - - -def explore_connections_tree_up_to_blockers(blocked_entrances: Set[str], connections_by_name, regions_by_name): - explored_entrances = set() - explored_regions = set() - entrances_to_explore = set() - current_node_name = "Menu" - current_node = regions_by_name[current_node_name] - entrances_to_explore.update(current_node.exits) - while entrances_to_explore: - current_entrance_name = entrances_to_explore.pop() - current_entrance = connections_by_name[current_entrance_name] - current_node_name = current_entrance.destination - - explored_entrances.add(current_entrance_name) - explored_regions.add(current_node_name) - - if current_entrance_name in blocked_entrances: - continue - - current_node = regions_by_name[current_node_name] - entrances_to_explore.update({entrance for entrance in current_node.exits if entrance not in explored_entrances}) - return explored_regions - - -class TestEntranceRando(SVTestCase): - - def test_entrance_randomization(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: option, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(flag=flag, msg=f"Seed: {seed}"): - entrances, regions = create_final_connections_and_regions(sv_options) - _, randomized_connections = randomize_connections(rand, sv_options, content, regions, entrances) - - for connection in vanilla_connections: - if flag in connection.flag: - connection_in_randomized = connection.name in randomized_connections - reverse_in_randomized = connection.reverse in randomized_connections - self.assertTrue(connection_in_randomized, f"Connection {connection.name} should be randomized but it is not in the output.") - self.assertTrue(reverse_in_randomized, f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - def test_entrance_randomization_without_island(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: option, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(option=option, flag=flag, seed=seed): - entrances, regions = create_final_connections_and_regions(sv_options) - _, randomized_connections = randomize_connections(rand, sv_options, content, regions, entrances) - - for connection in vanilla_connections: - if flag in connection.flag: - if RandomizationFlag.GINGER_ISLAND in connection.flag: - self.assertNotIn(connection.name, randomized_connections, - f"Connection {connection.name} should not be randomized but it is in the output.") - self.assertNotIn(connection.reverse, randomized_connections, - f"Connection {connection.reverse} should not be randomized but it is in the output.") - else: - self.assertIn(connection.name, randomized_connections, - f"Connection {connection.name} should be randomized but it is not in the output.") - self.assertIn(connection.reverse, randomized_connections, - f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - def test_cannot_put_island_access_on_island(self): - sv_options = fill_dataclass_with_default({ - EntranceRandomization.internal_name: EntranceRandomization.option_buildings, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, - SkillProgression.internal_name: SkillProgression.option_progressive_with_masteries, - }) - content = create_content(sv_options) - - for i in range(0, 100 if self.skip_long_tests else 10000): - seed = get_seed() - rand = random.Random(seed) - with self.subTest(msg=f"Seed: {seed}"): - entrances, regions = create_final_connections_and_regions(sv_options) - randomized_connections, randomized_data = randomize_connections(rand, sv_options, content, regions, entrances) - connections_by_name = {connection.name: connection for connection in randomized_connections} - - blocked_entrances = {EntranceName.use_island_obelisk, EntranceName.boat_to_ginger_island} - required_regions = {RegionName.wizard_tower, RegionName.boat_tunnel} - self.assert_can_reach_any_region_before_blockers(required_regions, blocked_entrances, connections_by_name, regions) - - def assert_can_reach_any_region_before_blockers(self, required_regions, blocked_entrances, connections_by_name, regions_by_name): - explored_regions = explore_connections_tree_up_to_blockers(blocked_entrances, connections_by_name, regions_by_name) - self.assertTrue(any(region in explored_regions for region in required_regions)) - - -class TestEntranceClassifications(SVTestCase): - - def test_non_progression_are_all_accessible_with_empty_inventory(self): - for option, flag in [(EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION)]: - world_options = { - EntranceRandomization.internal_name: option - } - with self.solo_world_sub_test(world_options=world_options, flag=flag) as (multiworld, sv_world): - ap_entrances = {entrance.name: entrance for entrance in multiworld.get_entrances()} - for randomized_entrance in sv_world.randomized_entrances: - if randomized_entrance in ap_entrances: - ap_entrance_origin = ap_entrances[randomized_entrance] - self.assertTrue(ap_entrance_origin.access_rule(multiworld.state)) - if sv_world.randomized_entrances[randomized_entrance] in ap_entrances: - ap_entrance_destination = multiworld.get_entrance(sv_world.randomized_entrances[randomized_entrance], 1) - self.assertTrue(ap_entrance_destination.access_rule(multiworld.state)) - - def test_no_ginger_island_entrances_when_excluded(self): - world_options = { - EntranceRandomization.internal_name: EntranceRandomization.option_disabled, - ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_true - } - with self.solo_world_sub_test(world_options=world_options) as (multiworld, _): - ap_entrances = {entrance.name: entrance for entrance in multiworld.get_entrances()} - entrance_data_by_name = {entrance.name: entrance for entrance in vanilla_connections} - for entrance_name in ap_entrances: - entrance_data = entrance_data_by_name[entrance_name] - with self.subTest(f"{entrance_name}: {entrance_data.flag}"): - self.assertFalse(entrance_data.flag & RandomizationFlag.GINGER_ISLAND) diff --git a/worlds/stardew_valley/test/TestStartInventory.py b/worlds/stardew_valley/test/TestStartInventory.py index dc44a1bb4598..43ee0e132961 100644 --- a/worlds/stardew_valley/test/TestStartInventory.py +++ b/worlds/stardew_valley/test/TestStartInventory.py @@ -1,5 +1,5 @@ -from . import SVTestBase from .assertion import WorldAssertMixin +from .bases import SVTestBase from .. import options diff --git a/worlds/stardew_valley/test/TestTraps.py b/worlds/stardew_valley/test/TestTraps.py new file mode 100644 index 000000000000..130674a35da4 --- /dev/null +++ b/worlds/stardew_valley/test/TestTraps.py @@ -0,0 +1,121 @@ +import unittest + +from .assertion import WorldAssertMixin +from .bases import SVTestBase +from .. import options, items_by_group, Group +from ..options import TrapDistribution + +default_distribution = {trap.name: TrapDistribution.default_weight for trap in items_by_group[Group.TRAP] if Group.DEPRECATED not in trap.groups} +threshold_difference = 2 +threshold_ballpark = 3 + + +class TestTrapDifficultyCanRemoveAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps, + } + + def test_no_traps_in_item_pool(self): + items = self.multiworld.get_items() + item_names = set(item.name for item in items) + for trap in items_by_group[Group.TRAP]: + if Group.DEPRECATED in trap.groups: + continue + self.assertNotIn(trap.name, item_names) + + +class TestDefaultDistributionHasAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, + } + + def test_all_traps_in_item_pool(self): + items = self.multiworld.get_items() + item_names = set(item.name for item in items) + for trap in items_by_group[Group.TRAP]: + if Group.DEPRECATED in trap.groups: + continue + self.assertIn(trap.name, item_names) + + +class TestDistributionIsRespectedAllTraps(WorldAssertMixin, SVTestBase): + options = { + options.QuestLocations.internal_name: 56, + options.Fishsanity.internal_name: options.Fishsanity.option_all, + options.Museumsanity.internal_name: options.Museumsanity.option_all, + options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, + options.Shipsanity.internal_name: options.Shipsanity.option_everything, + options.Cooksanity.internal_name: options.Cooksanity.option_all, + options.Craftsanity.internal_name: options.Craftsanity.option_all, + options.Mods.internal_name: frozenset(options.Mods.valid_keys), + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_medium, + options.TrapDistribution.internal_name: default_distribution | {"Nudge Trap": 100, "Bark Trap": 1, "Meow Trap": 1000, "Shuffle Trap": 0} + } + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + if cls.skip_long_tests: + raise unittest.SkipTest("Unstable tests disabled to not annoy anyone else when it rarely fails") + + def test_about_as_many_nudges_as_other_filler(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + other_fillers = ["Resource Pack: 4 Frozen Geode", "Resource Pack: 50 Wood", "Resource Pack: 5 Warp Totem: Farm", + "Resource Pack: 500 Money", "Resource Pack: 75 Copper Ore", "Resource Pack: 30 Speed-Gro"] + at_least_one_in_ballpark = False + for filler_item in other_fillers: + num_filler = len([item for item in item_names if item == filler_item]) + diff_num = abs(num_filler - num_nudge) + is_in_ballpark = diff_num <= threshold_ballpark + at_least_one_in_ballpark = at_least_one_in_ballpark or is_in_ballpark + self.assertTrue(at_least_one_in_ballpark) + + def test_fewer_barks_than_nudges_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + num_bark = len([item for item in item_names if item == "Bark Trap"]) + self.assertLess(num_bark, num_nudge - threshold_difference) + + def test_more_meows_than_nudges_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_nudge = len([item for item in item_names if item == "Nudge Trap"]) + num_meow = len([item for item in item_names if item == "Meow Trap"]) + self.assertGreater(num_meow, num_nudge + threshold_difference) + + def test_no_shuffles_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_shuffle = len([item for item in item_names if item == "Shuffle Trap"]) + self.assertEqual(0, num_shuffle) + + def test_omitted_item_same_as_nudge_in_item_pool(self): + items = self.multiworld.get_items() + item_names = [item.name for item in items] + num_time_flies = len([item for item in item_names if item == "Time Flies Trap"]) + num_debris = len([item for item in item_names if item == "Debris Trap"]) + num_bark = len([item for item in item_names if item == "Bark Trap"]) + num_meow = len([item for item in item_names if item == "Meow Trap"]) + self.assertLess(num_bark, num_time_flies - threshold_difference) + self.assertLess(num_bark, num_debris - threshold_difference) + self.assertGreater(num_meow, num_time_flies + threshold_difference) + self.assertGreater(num_meow, num_debris + threshold_difference) diff --git a/worlds/stardew_valley/test/TestWalnutsanity.py b/worlds/stardew_valley/test/TestWalnutsanity.py index 5cc2f79e91bc..e3411edd0224 100644 --- a/worlds/stardew_valley/test/TestWalnutsanity.py +++ b/worlds/stardew_valley/test/TestWalnutsanity.py @@ -1,4 +1,4 @@ -from . import SVTestBase +from .bases import SVTestBase from ..options import ExcludeGingerIsland, Walnutsanity, ToolProgression, SkillProgression from ..strings.ap_names.ap_option_names import WalnutsanityOptionName diff --git a/worlds/stardew_valley/test/__init__.py b/worlds/stardew_valley/test/__init__.py index 702f590221f5..e69de29bb2d1 100644 --- a/worlds/stardew_valley/test/__init__.py +++ b/worlds/stardew_valley/test/__init__.py @@ -1,287 +0,0 @@ -import itertools -import logging -import os -import threading -import unittest -from contextlib import contextmanager -from typing import Dict, ClassVar, Iterable, Tuple, Optional, List, Union, Any - -from BaseClasses import MultiWorld, CollectionState, get_seed, Location, Item -from test.bases import WorldTestBase -from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld -from worlds.AutoWorld import call_all -from .assertion import RuleAssertMixin -from .options.utils import fill_namespace_with_default, parse_class_option_keys, fill_dataclass_with_default -from .. import StardewValleyWorld, StardewItem, StardewRule -from ..logic.time_logic import MONTH_COEFFICIENT -from ..options import StardewValleyOption - -logger = logging.getLogger(__name__) - -DEFAULT_TEST_SEED = get_seed() -logger.info(f"Default Test Seed: {DEFAULT_TEST_SEED}") - - -def skip_default_tests() -> bool: - return not bool(os.environ.get("base", False)) - - -def skip_long_tests() -> bool: - return not bool(os.environ.get("long", False)) - - -class SVTestCase(unittest.TestCase): - skip_default_tests: bool = skip_default_tests() - """Set False to not skip the base fill tests""" - skip_long_tests: bool = skip_long_tests() - """Set False to run tests that take long""" - - @contextmanager - def solo_world_sub_test(self, msg: Optional[str] = None, - /, - world_options: Optional[Dict[Union[str, StardewValleyOption], Any]] = None, - *, - seed=DEFAULT_TEST_SEED, - world_caching=True, - **kwargs) -> Tuple[MultiWorld, StardewValleyWorld]: - if msg is not None: - msg += " " - else: - msg = "" - msg += f"[Seed = {seed}]" - - with self.subTest(msg, **kwargs): - with solo_multiworld(world_options, seed=seed, world_caching=world_caching) as (multiworld, world): - yield multiworld, world - - -class SVTestBase(RuleAssertMixin, WorldTestBase, SVTestCase): - game = "Stardew Valley" - world: StardewValleyWorld - player: ClassVar[int] = 1 - - seed = DEFAULT_TEST_SEED - - @classmethod - def setUpClass(cls) -> None: - if cls is SVTestBase: - raise unittest.SkipTest("No running tests on SVTestBase import.") - - super().setUpClass() - - def world_setup(self, *args, **kwargs): - self.options = parse_class_option_keys(self.options) - - self.multiworld = setup_solo_multiworld(self.options, seed=self.seed) - self.multiworld.lock.acquire() - world = self.multiworld.worlds[self.player] - - self.original_state = self.multiworld.state.copy() - self.original_itempool = self.multiworld.itempool.copy() - self.unfilled_locations = self.multiworld.get_unfilled_locations(1) - if self.constructed: - self.world = world # noqa - - def tearDown(self) -> None: - self.multiworld.state = self.original_state - self.multiworld.itempool = self.original_itempool - for location in self.unfilled_locations: - location.item = None - - self.multiworld.lock.release() - - @property - def run_default_tests(self) -> bool: - if self.skip_default_tests: - return False - return super().run_default_tests - - def collect_months(self, months: int) -> None: - real_total_prog_items = self.world.total_progression_items - percent = months * MONTH_COEFFICIENT - self.collect("Stardrop", real_total_prog_items * 100 // percent) - self.world.total_progression_items = real_total_prog_items - - def collect_lots_of_money(self, percent: float = 0.25): - self.collect("Shipping Bin") - real_total_prog_items = self.world.total_progression_items - required_prog_items = int(round(real_total_prog_items * percent)) - self.collect("Stardrop", required_prog_items) - - def collect_all_the_money(self): - self.collect_lots_of_money(0.95) - - def collect_everything(self): - non_event_items = [item for item in self.multiworld.get_items() if item.code] - for item in non_event_items: - self.multiworld.state.collect(item) - - def collect_all_except(self, item_to_not_collect: str): - non_event_items = [item for item in self.multiworld.get_items() if item.code] - for item in non_event_items: - if item.name != item_to_not_collect: - self.multiworld.state.collect(item) - - def get_real_locations(self) -> List[Location]: - return [location for location in self.multiworld.get_locations(self.player) if location.address is not None] - - def get_real_location_names(self) -> List[str]: - return [location.name for location in self.get_real_locations()] - - def collect(self, item: Union[str, Item, Iterable[Item]], count: int = 1) -> Union[None, Item, List[Item]]: - assert count > 0 - - if not isinstance(item, str): - super().collect(item) - return - - if count == 1: - item = self.create_item(item) - self.multiworld.state.collect(item) - return item - - items = [] - for i in range(count): - item = self.create_item(item) - self.multiworld.state.collect(item) - items.append(item) - - return items - - def create_item(self, item: str) -> StardewItem: - return self.world.create_item(item) - - def get_all_created_items(self) -> list[str]: - return [item.name for item in itertools.chain(self.multiworld.get_items(), self.multiworld.precollected_items[self.player])] - - def remove_one_by_name(self, item: str) -> None: - self.remove(self.create_item(item)) - - def reset_collection_state(self) -> None: - self.multiworld.state = self.original_state.copy() - - def assert_rule_true(self, rule: StardewRule, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_rule_true(rule, state) - - def assert_rule_false(self, rule: StardewRule, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_rule_false(rule, state) - - def assert_can_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_can_reach_location(location, state) - - def assert_cannot_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: - if state is None: - state = self.multiworld.state - super().assert_cannot_reach_location(location, state) - - -pre_generated_worlds = {} - - -@contextmanager -def solo_multiworld(world_options: Optional[Dict[Union[str, StardewValleyOption], Any]] = None, - *, - seed=DEFAULT_TEST_SEED, - world_caching=True) -> Tuple[MultiWorld, StardewValleyWorld]: - if not world_caching: - multiworld = setup_solo_multiworld(world_options, seed, _cache={}) - yield multiworld, multiworld.worlds[1] - else: - multiworld = setup_solo_multiworld(world_options, seed) - try: - multiworld.lock.acquire() - world = multiworld.worlds[1] - - original_state = multiworld.state.copy() - original_itempool = multiworld.itempool.copy() - unfilled_locations = multiworld.get_unfilled_locations(1) - - yield multiworld, world - - multiworld.state = original_state - multiworld.itempool = original_itempool - for location in unfilled_locations: - location.item = None - finally: - multiworld.lock.release() - - -# Mostly a copy of test.general.setup_solo_multiworld, I just don't want to change the core. -def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOption], str]] = None, - seed=DEFAULT_TEST_SEED, - _cache: Dict[frozenset, MultiWorld] = {}, # noqa - _steps=gen_steps) -> MultiWorld: - test_options = parse_class_option_keys(test_options) - - # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds - # If the simple dict caching ends up taking too much memory, we could replace it with some kind of lru cache. - should_cache = "start_inventory" not in test_options - if should_cache: - frozen_options = frozenset(test_options.items()).union({("seed", seed)}) - cached_multi_world = search_world_cache(_cache, frozen_options) - if cached_multi_world: - print(f"Using cached solo multi world [Seed = {cached_multi_world.seed}] [Cache size = {len(_cache)}]") - return cached_multi_world - - multiworld = setup_base_solo_multiworld(StardewValleyWorld, (), seed=seed) - # print(f"Seed: {multiworld.seed}") # Uncomment to print the seed for every test - - args = fill_namespace_with_default(test_options) - multiworld.set_options(args) - - if "start_inventory" in test_options: - for item, amount in test_options["start_inventory"].items(): - for _ in range(amount): - multiworld.push_precollected(multiworld.create_item(item, 1)) - - for step in _steps: - call_all(multiworld, step) - - if should_cache: - add_to_world_cache(_cache, frozen_options, multiworld) # noqa - - # Lock is needed for multi-threading tests - setattr(multiworld, "lock", threading.Lock()) - - return multiworld - - -def search_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset) -> Optional[MultiWorld]: - try: - return cache[frozen_options] - except KeyError: - for cached_options, multi_world in cache.items(): - if frozen_options.issubset(cached_options): - return multi_world - return None - - -def add_to_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset, multi_world: MultiWorld) -> None: - # We could complete the key with all the default options, but that does not seem to improve performances. - cache[frozen_options] = multi_world - - -def setup_multiworld(test_options: Iterable[Dict[str, int]] = None, seed=None) -> MultiWorld: # noqa - if test_options is None: - test_options = [] - - multiworld = MultiWorld(len(test_options)) - multiworld.player_name = {} - multiworld.set_seed(seed) - multiworld.state = CollectionState(multiworld) - for i in range(1, len(test_options) + 1): - multiworld.game[i] = StardewValleyWorld.game - multiworld.player_name.update({i: f"Tester{i}"}) - args = fill_namespace_with_default(test_options) - multiworld.set_options(args) - - for step in gen_steps: - call_all(multiworld, step) - - return multiworld diff --git a/worlds/stardew_valley/test/assertion/rule_assert.py b/worlds/stardew_valley/test/assertion/rule_assert.py index 02362f2d150d..39b69a529f74 100644 --- a/worlds/stardew_valley/test/assertion/rule_assert.py +++ b/worlds/stardew_valley/test/assertion/rule_assert.py @@ -1,7 +1,7 @@ from typing import List from unittest import TestCase -from BaseClasses import CollectionState, Location, Region +from BaseClasses import CollectionState, Location, Region, Entrance from ...stardew_rule import StardewRule, false_, MISSING_ITEM, Reach from ...stardew_rule.rule_explain import explain @@ -79,3 +79,13 @@ def assert_cannot_reach_region(self, region: Region | str, state: CollectionStat except KeyError as e: raise AssertionError(f"Error while checking region {region_name}: {e}" f"\nExplanation: {expl}") + + def assert_can_reach_entrance(self, entrance: Entrance | str, state: CollectionState) -> None: + entrance_name = entrance.name if isinstance(entrance, Entrance) else entrance + expl = explain(Reach(entrance_name, "Entrance", 1), state) + try: + can_reach = state.can_reach_entrance(entrance_name, 1) + self.assertTrue(can_reach, expl) + except KeyError as e: + raise AssertionError(f"Error while checking entrance {entrance_name}: {e}" + f"\nExplanation: {expl}") diff --git a/worlds/stardew_valley/test/bases.py b/worlds/stardew_valley/test/bases.py new file mode 100644 index 000000000000..a2852183996d --- /dev/null +++ b/worlds/stardew_valley/test/bases.py @@ -0,0 +1,311 @@ +import itertools +import logging +import os +import threading +import typing +import unittest +from contextlib import contextmanager +from typing import Optional, Dict, Union, Any, List, Iterable + +from BaseClasses import get_seed, MultiWorld, Location, Item, CollectionState, Entrance +from test.bases import WorldTestBase +from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld +from worlds.AutoWorld import call_all +from .assertion import RuleAssertMixin +from .options.utils import parse_class_option_keys, fill_namespace_with_default +from .. import StardewValleyWorld, StardewItem, StardewRule +from ..logic.time_logic import MONTH_COEFFICIENT +from ..options import StardewValleyOption, options + +logger = logging.getLogger(__name__) +DEFAULT_TEST_SEED = get_seed() +logger.info(f"Default Test Seed: {DEFAULT_TEST_SEED}") + + +def skip_default_tests() -> bool: + return not bool(os.environ.get("base", False)) + + +def skip_long_tests() -> bool: + return not bool(os.environ.get("long", False)) + + +class SVTestCase(unittest.TestCase): + skip_default_tests: bool = skip_default_tests() + """Set False to not skip the base fill tests""" + skip_long_tests: bool = skip_long_tests() + """Set False to run tests that take long""" + + @contextmanager + def solo_world_sub_test(self, msg: str | None = None, + /, + world_options: dict[str | type[StardewValleyOption], Any] | None = None, + *, + seed=DEFAULT_TEST_SEED, + world_caching=True, + **kwargs) -> Iterable[tuple[MultiWorld, StardewValleyWorld]]: + if msg is not None: + msg += " " + else: + msg = "" + msg += f"[Seed = {seed}]" + + with self.subTest(msg, **kwargs): + with solo_multiworld(world_options, seed=seed, world_caching=world_caching) as (multiworld, world): + yield multiworld, world + + +class SVTestBase(RuleAssertMixin, WorldTestBase, SVTestCase): + game = "Stardew Valley" + world: StardewValleyWorld + + seed = DEFAULT_TEST_SEED + + @classmethod + def setUpClass(cls) -> None: + if cls is SVTestBase: + raise unittest.SkipTest("No running tests on SVTestBase import.") + + super().setUpClass() + + def world_setup(self, *args, **kwargs): + self.options = parse_class_option_keys(self.options) + + self.multiworld = setup_solo_multiworld(self.options, seed=self.seed) + self.multiworld.lock.acquire() + world = self.multiworld.worlds[self.player] + + self.original_state = self.multiworld.state.copy() + self.original_itempool = self.multiworld.itempool.copy() + self.unfilled_locations = self.multiworld.get_unfilled_locations(1) + if self.constructed: + self.world = world # noqa + + def tearDown(self) -> None: + self.multiworld.state = self.original_state + self.multiworld.itempool = self.original_itempool + for location in self.unfilled_locations: + location.item = None + + self.multiworld.lock.release() + + @property + def run_default_tests(self) -> bool: + if self.skip_default_tests: + return False + return super().run_default_tests + + def collect_months(self, months: int) -> None: + real_total_prog_items = self.world.total_progression_items + percent = months * MONTH_COEFFICIENT + self.collect("Stardrop", real_total_prog_items * 100 // percent) + self.world.total_progression_items = real_total_prog_items + + def collect_lots_of_money(self, percent: float = 0.25): + self.collect("Shipping Bin") + real_total_prog_items = self.world.total_progression_items + required_prog_items = int(round(real_total_prog_items * percent)) + self.collect("Stardrop", required_prog_items) + + def collect_all_the_money(self): + self.collect_lots_of_money(0.95) + + def collect_everything(self): + non_event_items = [item for item in self.multiworld.get_items() if item.code] + for item in non_event_items: + self.multiworld.state.collect(item) + + def collect_all_except(self, item_to_not_collect: str): + non_event_items = [item for item in self.multiworld.get_items() if item.code] + for item in non_event_items: + if item.name != item_to_not_collect: + self.multiworld.state.collect(item) + + def get_real_locations(self) -> List[Location]: + return [location for location in self.multiworld.get_locations(self.player) if location.address is not None] + + def get_real_location_names(self) -> List[str]: + return [location.name for location in self.get_real_locations()] + + def collect(self, item: Union[str, Item, Iterable[Item]], count: int = 1) -> Union[None, Item, List[Item]]: + assert count > 0 + + if not isinstance(item, str): + super().collect(item) + return + + if count == 1: + item = self.create_item(item) + self.multiworld.state.collect(item) + return item + + items = [] + for i in range(count): + item = self.create_item(item) + self.multiworld.state.collect(item) + items.append(item) + + return items + + def create_item(self, item: str) -> StardewItem: + return self.world.create_item(item) + + def get_all_created_items(self) -> list[str]: + return [item.name for item in itertools.chain(self.multiworld.get_items(), self.multiworld.precollected_items[self.player])] + + def remove_one_by_name(self, item: str) -> None: + self.remove(self.create_item(item)) + + def reset_collection_state(self) -> None: + self.multiworld.state = self.original_state.copy() + + def assert_rule_true(self, rule: StardewRule, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_rule_true(rule, state) + + def assert_rule_false(self, rule: StardewRule, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_rule_false(rule, state) + + def assert_can_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_can_reach_location(location, state) + + def assert_cannot_reach_location(self, location: Location | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_cannot_reach_location(location, state) + + def assert_can_reach_entrance(self, entrance: Entrance | str, state: CollectionState | None = None) -> None: + if state is None: + state = self.multiworld.state + super().assert_can_reach_entrance(entrance, state) + + +pre_generated_worlds = {} + + +@contextmanager +def solo_multiworld(world_options: dict[str | type[StardewValleyOption], Any] | None = None, + *, + seed=DEFAULT_TEST_SEED, + world_caching=True) -> Iterable[tuple[MultiWorld, StardewValleyWorld]]: + if not world_caching: + multiworld = setup_solo_multiworld(world_options, seed, _cache={}) + yield multiworld, typing.cast(StardewValleyWorld, multiworld.worlds[1]) + else: + multiworld = setup_solo_multiworld(world_options, seed) + try: + multiworld.lock.acquire() + world = multiworld.worlds[1] + + original_state = multiworld.state.copy() + original_itempool = multiworld.itempool.copy() + unfilled_locations = multiworld.get_unfilled_locations(1) + + yield multiworld, typing.cast(StardewValleyWorld, world) + + multiworld.state = original_state + multiworld.itempool = original_itempool + for location in unfilled_locations: + location.item = None + finally: + multiworld.lock.release() + + +# Mostly a copy of test.general.setup_solo_multiworld, I just don't want to change the core. +def setup_solo_multiworld(test_options: Optional[Dict[Union[str, StardewValleyOption], str]] = None, + seed=DEFAULT_TEST_SEED, + _cache: Dict[frozenset, MultiWorld] = {}, # noqa + _steps=gen_steps) -> MultiWorld: + test_options = parse_class_option_keys(test_options) + + # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds + # If the simple dict caching ends up taking too much memory, we could replace it with some kind of lru cache. + should_cache = should_cache_world(test_options) + if should_cache: + frozen_options = make_hashable(test_options, seed) + cached_multi_world = search_world_cache(_cache, frozen_options) + if cached_multi_world: + print(f"Using cached solo multi world [Seed = {cached_multi_world.seed}] [Cache size = {len(_cache)}]") + return cached_multi_world + + multiworld = setup_base_solo_multiworld(StardewValleyWorld, (), seed=seed) + # print(f"Seed: {multiworld.seed}") # Uncomment to print the seed for every test + + args = fill_namespace_with_default(test_options) + multiworld.set_options(args) + + if "start_inventory" in test_options: + for item, amount in test_options["start_inventory"].items(): + for _ in range(amount): + multiworld.push_precollected(multiworld.create_item(item, 1)) + + for step in _steps: + call_all(multiworld, step) + + if should_cache: + add_to_world_cache(_cache, frozen_options, multiworld) # noqa + + # Lock is needed for multi-threading tests + setattr(multiworld, "lock", threading.Lock()) + + return multiworld + + +def should_cache_world(test_options): + if "start_inventory" in test_options: + return False + + trap_distribution_key = "trap_distribution" + if trap_distribution_key not in test_options: + return True + + trap_distribution = test_options[trap_distribution_key] + for key in trap_distribution: + if trap_distribution[key] != options.TrapDistribution.default_weight: + return False + + return True + + +def make_hashable(test_options, seed): + return frozenset(test_options.items()).union({("seed", seed)}) + + +def search_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset) -> Optional[MultiWorld]: + try: + return cache[frozen_options] + except KeyError: + for cached_options, multi_world in cache.items(): + if frozen_options.issubset(cached_options): + return multi_world + return None + + +def add_to_world_cache(cache: Dict[frozenset, MultiWorld], frozen_options: frozenset, multi_world: MultiWorld) -> None: + # We could complete the key with all the default options, but that does not seem to improve performances. + cache[frozen_options] = multi_world + + +def setup_multiworld(test_options: Iterable[Dict[str, int]] = None, seed=None) -> MultiWorld: # noqa + if test_options is None: + test_options = [] + + multiworld = MultiWorld(len(test_options)) + multiworld.player_name = {} + multiworld.set_seed(seed) + for i in range(1, len(test_options) + 1): + multiworld.game[i] = StardewValleyWorld.game + multiworld.player_name.update({i: f"Tester{i}"}) + args = fill_namespace_with_default(test_options) + multiworld.set_options(args) + multiworld.state = CollectionState(multiworld) + + for step in gen_steps: + call_all(multiworld, step) + + return multiworld diff --git a/worlds/stardew_valley/test/content/TestGingerIsland.py b/worlds/stardew_valley/test/content/TestGingerIsland.py index 7e7f866dfc8e..c1f16b48c4f8 100644 --- a/worlds/stardew_valley/test/content/TestGingerIsland.py +++ b/worlds/stardew_valley/test/content/TestGingerIsland.py @@ -1,5 +1,5 @@ from . import SVContentPackTestBase -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...content import content_packs from ...data.artisan import MachineSource diff --git a/worlds/stardew_valley/test/content/mods/TestSVE.py b/worlds/stardew_valley/test/content/mods/TestSVE.py index 4065498d6be7..7cd0a822a152 100644 --- a/worlds/stardew_valley/test/content/mods/TestSVE.py +++ b/worlds/stardew_valley/test/content/mods/TestSVE.py @@ -1,5 +1,5 @@ from .. import SVContentPackTestBase -from ... import SVTestBase +from ...bases import SVTestBase from .... import options from ....content import content_packs from ....mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/long/TestModsLong.py b/worlds/stardew_valley/test/long/TestModsLong.py index bc5e8bfff8ac..d14af8bc5501 100644 --- a/worlds/stardew_valley/test/long/TestModsLong.py +++ b/worlds/stardew_valley/test/long/TestModsLong.py @@ -4,8 +4,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion import WorldAssertMixin, ModAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ..options.option_names import all_option_choices from ... import options from ...mods.mod_data import ModNames diff --git a/worlds/stardew_valley/test/long/TestOptionsLong.py b/worlds/stardew_valley/test/long/TestOptionsLong.py index db467964e7c4..3c9690e2e6bf 100644 --- a/worlds/stardew_valley/test/long/TestOptionsLong.py +++ b/worlds/stardew_valley/test/long/TestOptionsLong.py @@ -4,8 +4,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion.world_assert import WorldAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ..options.option_names import all_option_choices from ... import options diff --git a/worlds/stardew_valley/test/long/TestPreRolledRandomness.py b/worlds/stardew_valley/test/long/TestPreRolledRandomness.py index 3b6f818ec43c..3d3e0da13bf7 100644 --- a/worlds/stardew_valley/test/long/TestPreRolledRandomness.py +++ b/worlds/stardew_valley/test/long/TestPreRolledRandomness.py @@ -3,8 +3,8 @@ from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestCase, solo_multiworld, skip_long_tests from ..assertion import WorldAssertMixin +from ..bases import skip_long_tests, SVTestCase, solo_multiworld from ... import options if skip_long_tests(): diff --git a/worlds/stardew_valley/test/mods/TestBiggerBackpack.py b/worlds/stardew_valley/test/mods/TestBiggerBackpack.py index f6d312976c45..8ec2e539b7e1 100644 --- a/worlds/stardew_valley/test/mods/TestBiggerBackpack.py +++ b/worlds/stardew_valley/test/mods/TestBiggerBackpack.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ...mods.mod_data import ModNames from ...options import Mods, BackpackProgression diff --git a/worlds/stardew_valley/test/mods/TestMods.py b/worlds/stardew_valley/test/mods/TestMods.py index bd5d7d626dfc..8cff10b4fc3b 100644 --- a/worlds/stardew_valley/test/mods/TestMods.py +++ b/worlds/stardew_valley/test/mods/TestMods.py @@ -1,17 +1,13 @@ -import random from typing import ClassVar -from BaseClasses import get_seed from test.param import classvar_matrix -from .. import SVTestBase, SVTestCase, solo_multiworld from ..TestGeneration import get_all_permanent_progression_items from ..assertion import ModAssertMixin, WorldAssertMixin +from ..bases import SVTestCase, SVTestBase, solo_multiworld from ..options.presets import allsanity_mods_6_x_x -from ..options.utils import fill_dataclass_with_default -from ... import options, Group, create_content +from ... import options, Group from ...mods.mod_data import ModNames from ...options.options import all_mods -from ...regions import RandomizationFlag, randomize_connections, create_final_connections_and_regions class TestCanGenerateAllsanityWithMods(WorldAssertMixin, ModAssertMixin, SVTestCase): @@ -117,39 +113,6 @@ def test_all_progression_items_except_island_are_added_to_the_pool(self): self.assertIn(progression_item.name, all_created_items) -class TestModEntranceRando(SVTestCase): - - def test_mod_entrance_randomization(self): - for option, flag in [(options.EntranceRandomization.option_pelican_town, RandomizationFlag.PELICAN_TOWN), - (options.EntranceRandomization.option_non_progression, RandomizationFlag.NON_PROGRESSION), - (options.EntranceRandomization.option_buildings_without_house, RandomizationFlag.BUILDINGS), - (options.EntranceRandomization.option_buildings, RandomizationFlag.BUILDINGS)]: - sv_options = fill_dataclass_with_default({ - options.EntranceRandomization.internal_name: option, - options.ExcludeGingerIsland.internal_name: options.ExcludeGingerIsland.option_false, - options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, - options.Mods.internal_name: frozenset(options.Mods.valid_keys) - }) - content = create_content(sv_options) - seed = get_seed() - rand = random.Random(seed) - with self.subTest(option=option, flag=flag, seed=seed): - final_connections, final_regions = create_final_connections_and_regions(sv_options) - - _, randomized_connections = randomize_connections(rand, sv_options, content, final_regions, final_connections) - - for connection_name in final_connections: - connection = final_connections[connection_name] - if flag in connection.flag: - connection_in_randomized = connection_name in randomized_connections - reverse_in_randomized = connection.reverse in randomized_connections - self.assertTrue(connection_in_randomized, f"Connection {connection_name} should be randomized but it is not in the output") - self.assertTrue(reverse_in_randomized, f"Connection {connection.reverse} should be randomized but it is not in the output.") - - self.assertEqual(len(set(randomized_connections.values())), len(randomized_connections.values()), - f"Connections are duplicated in randomization.") - - class TestVanillaLogicAlternativeWhenQuestsAreNotRandomized(WorldAssertMixin, SVTestBase): """We often forget to add an alternative rule that works when quests are not randomized. When this happens, some Location are not reachable because they depend on items that are only added to the pool when quests are randomized. diff --git a/worlds/stardew_valley/test/mods/TestModsFill.py b/worlds/stardew_valley/test/mods/TestModsFill.py index a140f5abae14..334a4ff9e47d 100644 --- a/worlds/stardew_valley/test/mods/TestModsFill.py +++ b/worlds/stardew_valley/test/mods/TestModsFill.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ... import options diff --git a/worlds/stardew_valley/test/mods/TestSVE.py b/worlds/stardew_valley/test/mods/TestSVE.py index ca63dcb351aa..a6b6f6a3dc99 100644 --- a/worlds/stardew_valley/test/mods/TestSVE.py +++ b/worlds/stardew_valley/test/mods/TestSVE.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...mods.mod_data import ModNames from ...strings.ap_names.mods.mod_items import SVEQuestItem diff --git a/worlds/stardew_valley/test/options/TestPresets.py b/worlds/stardew_valley/test/options/TestPresets.py index 9384acd77060..5c1cee4a58b9 100644 --- a/worlds/stardew_valley/test/options/TestPresets.py +++ b/worlds/stardew_valley/test/options/TestPresets.py @@ -1,16 +1,16 @@ -from Options import PerGameCommonOptions, OptionSet -from .. import SVTestCase -from ...options import StardewValleyOptions +from Options import PerGameCommonOptions, OptionSet, OptionDict +from ..bases import SVTestCase +from ...options import StardewValleyOptions, TrapItems from ...options.presets import sv_options_presets class TestPresets(SVTestCase): def test_all_presets_explicitly_set_all_options(self): all_option_names = {option_key for option_key in StardewValleyOptions.type_hints} - omitted_option_names = {option_key for option_key in PerGameCommonOptions.type_hints} + omitted_option_names = {option_key for option_key in PerGameCommonOptions.type_hints} | {TrapItems.internal_name} mandatory_option_names = {option_key for option_key in all_option_names if option_key not in omitted_option_names and - not issubclass(StardewValleyOptions.type_hints[option_key], OptionSet)} + not issubclass(StardewValleyOptions.type_hints[option_key], OptionSet | OptionDict)} for preset_name in sv_options_presets: with self.subTest(f"{preset_name}"): diff --git a/worlds/stardew_valley/test/options/presets.py b/worlds/stardew_valley/test/options/presets.py index 57f8b0beb960..86b21c693e69 100644 --- a/worlds/stardew_valley/test/options/presets.py +++ b/worlds/stardew_valley/test/options/presets.py @@ -70,7 +70,7 @@ def allsanity_no_mods_6_x_x(): options.SkillProgression.internal_name: options.SkillProgression.option_progressive_with_masteries, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_board_qi, options.ToolProgression.internal_name: options.ToolProgression.option_progressive, - options.TrapItems.internal_name: options.TrapItems.option_nightmare, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_nightmare, options.Walnutsanity.internal_name: options.Walnutsanity.preset_all } @@ -119,7 +119,7 @@ def get_minsanity_options(): options.SkillProgression.internal_name: options.SkillProgression.option_vanilla, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_vanilla, options.ToolProgression.internal_name: options.ToolProgression.option_vanilla, - options.TrapItems.internal_name: options.TrapItems.option_no_traps, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_no_traps, options.Walnutsanity.internal_name: options.Walnutsanity.preset_none } @@ -156,7 +156,7 @@ def minimal_locations_maximal_items(): options.SkillProgression.internal_name: options.SkillProgression.option_vanilla, options.SpecialOrderLocations.internal_name: options.SpecialOrderLocations.option_vanilla, options.ToolProgression.internal_name: options.ToolProgression.option_vanilla, - options.TrapItems.internal_name: options.TrapItems.option_nightmare, + options.TrapDifficulty.internal_name: options.TrapDifficulty.option_nightmare, options.Walnutsanity.internal_name: options.Walnutsanity.preset_none } return min_max_options diff --git a/worlds/stardew_valley/test/performance/TestPerformance.py b/worlds/stardew_valley/test/performance/TestPerformance.py index ca63ee5e2c73..2951e6d00a70 100644 --- a/worlds/stardew_valley/test/performance/TestPerformance.py +++ b/worlds/stardew_valley/test/performance/TestPerformance.py @@ -8,7 +8,7 @@ from BaseClasses import get_seed from Fill import distribute_items_restrictive, balance_multiworld_progression from worlds import AutoWorld -from .. import SVTestCase, setup_multiworld +from ..bases import SVTestCase, setup_multiworld from ..options.presets import default_6_x_x, allsanity_no_mods_6_x_x, allsanity_mods_6_x_x, minimal_locations_maximal_items assert default_6_x_x diff --git a/worlds/stardew_valley/test/regions/TestEntranceClassifications.py b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py new file mode 100644 index 000000000000..4bc13cb51cf8 --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestEntranceClassifications.py @@ -0,0 +1,36 @@ +from ..bases import SVTestBase +from ... import options +from ...regions.model import RandomizationFlag +from ...regions.regions import create_all_connections + + +class EntranceRandomizationAssertMixin: + + def assert_non_progression_are_all_accessible_with_empty_inventory(self: SVTestBase): + all_connections = create_all_connections(self.world.content.registered_packs) + non_progression_connections = [connection for connection in all_connections.values() if RandomizationFlag.BIT_NON_PROGRESSION in connection.flag] + + for non_progression_connections in non_progression_connections: + with self.subTest(connection=non_progression_connections.name): + self.assert_can_reach_entrance(non_progression_connections.name) + + +# This test does not actually need to generate with entrance randomization. Entrances rules are the same regardless of the randomization. +class TestVanillaEntranceClassifications(EntranceRandomizationAssertMixin, SVTestBase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset() + } + + def test_non_progression_are_all_accessible_with_empty_inventory(self): + self.assert_non_progression_are_all_accessible_with_empty_inventory() + + +class TestModdedEntranceClassifications(EntranceRandomizationAssertMixin, SVTestBase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset(options.Mods.valid_keys) + } + + def test_non_progression_are_all_accessible_with_empty_inventory(self): + self.assert_non_progression_are_all_accessible_with_empty_inventory() diff --git a/worlds/stardew_valley/test/regions/TestEntranceRandomization.py b/worlds/stardew_valley/test/regions/TestEntranceRandomization.py new file mode 100644 index 000000000000..15c46637ab05 --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestEntranceRandomization.py @@ -0,0 +1,167 @@ +from collections import deque +from collections.abc import Collection +from unittest.mock import patch, Mock + +from BaseClasses import get_seed, MultiWorld, Entrance +from ..assertion import WorldAssertMixin +from ..bases import SVTestCase, solo_multiworld +from ... import options +from ...mods.mod_data import ModNames +from ...options import EntranceRandomization, ExcludeGingerIsland, SkillProgression +from ...options.options import all_mods +from ...regions.entrance_rando import create_entrance_rando_target, prepare_mod_data, connect_regions +from ...regions.model import RegionData, ConnectionData, RandomizationFlag +from ...strings.entrance_names import Entrance as EntranceName +from ...strings.region_names import Region as RegionName + + +class TestEntranceRando(SVTestCase): + + def test_given_connection_matching_randomization_when_connect_regions_then_make_connection_entrance_rando_target(self): + region_data_by_name = { + "Region1": RegionData("Region1", ("randomized_connection", "not_randomized")), + "Region2": RegionData("Region2"), + "Region3": RegionData("Region3"), + } + connection_data_by_name = { + "randomized_connection": ConnectionData("randomized_connection", "Region2", flag=RandomizationFlag.PELICAN_TOWN), + "not_randomized": ConnectionData("not_randomized", "Region2", flag=RandomizationFlag.BUILDINGS), + } + regions_by_name = { + "Region1": Mock(), + "Region2": Mock(), + "Region3": Mock(), + } + player_randomization_flag = RandomizationFlag.BIT_PELICAN_TOWN + + with patch("worlds.stardew_valley.regions.entrance_rando.create_entrance_rando_target") as mock_create_entrance_rando_target: + connect_regions(region_data_by_name, connection_data_by_name, regions_by_name, player_randomization_flag) + + expected_origin, expected_destination = regions_by_name["Region1"], regions_by_name["Region2"] + expected_connection = connection_data_by_name["randomized_connection"] + mock_create_entrance_rando_target.assert_called_once_with(expected_origin, expected_destination, expected_connection) + + def test_when_create_entrance_rando_target_then_create_exit_and_er_target(self): + origin = Mock() + destination = Mock() + connection_data = ConnectionData("origin to destination", "destination") + + create_entrance_rando_target(origin, destination, connection_data) + + origin.create_exit.assert_called_once_with("origin to destination") + destination.create_er_target.assert_called_once_with("destination to origin") + + def test_when_prepare_mod_data_then_swapped_connections_contains_both_directions(self): + placements = Mock(pairings=[("A to B", "C to A"), ("C to D", "A to C")]) + + swapped_connections = prepare_mod_data(placements) + + self.assertEqual({"A to B": "A to C", "C to A": "B to A", "C to D": "C to A", "A to C": "D to C"}, swapped_connections) + + +class TestEntranceRandoCreatesValidWorlds(WorldAssertMixin, SVTestCase): + + # The following tests validate that ER still generates winnable and logically-sane games with given mods. + # Mods that do not interact with entrances are skipped + # Not all ER settings are tested, because 'buildings' is, essentially, a superset of all others + def test_ginger_island_excluded_buildings(self): + world_options = { + options.EntranceRandomization: options.EntranceRandomization.option_buildings, + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_true + } + with solo_multiworld(world_options) as (multi_world, _): + self.assert_basic_checks(multi_world) + + def test_deepwoods_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.deepwoods, options.EntranceRandomization.option_buildings) + + def test_juna_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.juna, options.EntranceRandomization.option_buildings) + + def test_jasper_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.jasper, options.EntranceRandomization.option_buildings) + + def test_alec_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.alec, options.EntranceRandomization.option_buildings) + + def test_yoba_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.yoba, options.EntranceRandomization.option_buildings) + + def test_eugene_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.eugene, options.EntranceRandomization.option_buildings) + + def test_ayeisha_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.ayeisha, options.EntranceRandomization.option_buildings) + + def test_riley_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.riley, options.EntranceRandomization.option_buildings) + + def test_sve_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.sve, options.EntranceRandomization.option_buildings) + + def test_alecto_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.alecto, options.EntranceRandomization.option_buildings) + + def test_lacey_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.lacey, options.EntranceRandomization.option_buildings) + + def test_boarding_house_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(ModNames.boarding_house, options.EntranceRandomization.option_buildings) + + def test_all_mods_entrance_randomization_buildings(self): + self.perform_basic_checks_on_mod_with_er(all_mods, options.EntranceRandomization.option_buildings) + + def perform_basic_checks_on_mod_with_er(self, mods: str | set[str], er_option: int) -> None: + if isinstance(mods, str): + mods = {mods} + world_options = { + options.EntranceRandomization: er_option, + options.Mods: frozenset(mods), + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false + } + with solo_multiworld(world_options) as (multi_world, _): + self.assert_basic_checks(multi_world) + + +# GER should have this covered, but it's good to have a backup +class TestGingerIslandEntranceRando(SVTestCase): + def test_cannot_put_island_access_on_island(self): + test_options = { + options.EntranceRandomization: EntranceRandomization.option_buildings, + options.ExcludeGingerIsland: ExcludeGingerIsland.option_false, + options.SkillProgression: SkillProgression.option_progressive_with_masteries, + } + + blocked_entrances = {EntranceName.use_island_obelisk, EntranceName.boat_to_ginger_island} + required_regions = {RegionName.wizard_tower, RegionName.boat_tunnel} + + for i in range(0, 10 if self.skip_long_tests else 1000): + seed = get_seed() + with self.solo_world_sub_test(f"Seed: {seed}", world_options=test_options, world_caching=False, seed=seed) as (multiworld, world): + self.assert_can_reach_any_region_before_blockers(required_regions, blocked_entrances, multiworld) + + def assert_can_reach_any_region_before_blockers(self, required_regions: Collection[str], blocked_entrances: Collection[str], multiworld: MultiWorld): + explored_regions = explore_regions_up_to_blockers(blocked_entrances, multiworld) + self.assertTrue(any(region in explored_regions for region in required_regions)) + + +def explore_regions_up_to_blockers(blocked_entrances: Collection[str], multiworld: MultiWorld) -> set[str]: + explored_regions: set[str] = set() + regions_by_name = multiworld.regions.region_cache[1] + regions_to_explore = deque([regions_by_name["Menu"]]) + + while regions_to_explore: + region = regions_to_explore.pop() + + if region.name in explored_regions: + continue + + explored_regions.add(region.name) + + for exit_ in region.exits: + exit_: Entrance + if exit_.name in blocked_entrances: + continue + regions_to_explore.append(exit_.connected_region) + + return explored_regions diff --git a/worlds/stardew_valley/test/regions/TestRandomizationFlag.py b/worlds/stardew_valley/test/regions/TestRandomizationFlag.py new file mode 100644 index 000000000000..6a01ef07e96d --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestRandomizationFlag.py @@ -0,0 +1,88 @@ +import unittest + +from ..options.utils import fill_dataclass_with_default +from ... import create_content, options +from ...regions.entrance_rando import create_player_randomization_flag +from ...regions.model import RandomizationFlag, ConnectionData + + +class TestConnectionData(unittest.TestCase): + + def test_given_entrances_not_randomized_when_is_eligible_for_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.NOT_RANDOMIZED + + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + def test_given_pelican_town_connection_when_is_eligible_for_pelican_town_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_PELICAN_TOWN + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_pelican_town_connection_when_is_eligible_for_buildings_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_BUILDINGS + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.PELICAN_TOWN) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_non_progression_connection_when_is_eligible_for_pelican_town_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.BIT_PELICAN_TOWN + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + def test_given_non_progression_masteries_connection_when_is_eligible_for_non_progression_randomization_then_eligible(self): + player_flag = RandomizationFlag.BIT_NON_PROGRESSION + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION ^ RandomizationFlag.EXCLUDE_MASTERIES) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertTrue(is_eligible) + + def test_given_non_progression_masteries_connection_when_is_eligible_for_non_progression_without_masteries_randomization_then_not_eligible(self): + player_flag = RandomizationFlag.BIT_NON_PROGRESSION | RandomizationFlag.EXCLUDE_MASTERIES + connection = ConnectionData("Go to Somewhere", "Somewhere", RandomizationFlag.NON_PROGRESSION ^ RandomizationFlag.EXCLUDE_MASTERIES) + + is_eligible = connection.is_eligible_for_randomization(player_flag) + + self.assertFalse(is_eligible) + + +class TestRandomizationFlag(unittest.TestCase): + + def test_given_entrance_randomization_choice_when_create_player_randomization_flag_then_only_relevant_bit_is_enabled(self): + for entrance_randomization_choice, expected_bit in ( + (options.EntranceRandomization.option_disabled, RandomizationFlag.NOT_RANDOMIZED), + (options.EntranceRandomization.option_pelican_town, RandomizationFlag.BIT_PELICAN_TOWN), + (options.EntranceRandomization.option_non_progression, RandomizationFlag.BIT_NON_PROGRESSION), + (options.EntranceRandomization.option_buildings_without_house, RandomizationFlag.BIT_BUILDINGS), + (options.EntranceRandomization.option_buildings, RandomizationFlag.BIT_BUILDINGS), + (options.EntranceRandomization.option_chaos, RandomizationFlag.BIT_BUILDINGS), + ): + player_options = fill_dataclass_with_default({options.EntranceRandomization: entrance_randomization_choice}) + content = create_content(player_options) + + flag = create_player_randomization_flag(player_options.entrance_randomization, content) + + self.assertEqual(flag, expected_bit) + + def test_given_masteries_not_randomized_when_create_player_randomization_flag_then_exclude_masteries_bit_enabled(self): + for entrance_randomization_choice in set(options.EntranceRandomization.options.values()) ^ {options.EntranceRandomization.option_disabled}: + player_options = fill_dataclass_with_default({ + options.EntranceRandomization: entrance_randomization_choice, + options.SkillProgression: options.SkillProgression.option_progressive + }) + content = create_content(player_options) + + flag = create_player_randomization_flag(player_options.entrance_randomization, content) + + self.assertIn(RandomizationFlag.EXCLUDE_MASTERIES, flag) diff --git a/worlds/stardew_valley/test/regions/TestRegionConnections.py b/worlds/stardew_valley/test/regions/TestRegionConnections.py new file mode 100644 index 000000000000..f20ef7943c90 --- /dev/null +++ b/worlds/stardew_valley/test/regions/TestRegionConnections.py @@ -0,0 +1,66 @@ +import unittest + +from ..options.utils import fill_dataclass_with_default +from ... import options +from ...content import create_content +from ...mods.region_data import region_data_by_content_pack +from ...regions import vanilla_data +from ...regions.model import MergeFlag +from ...regions.regions import create_all_regions, create_all_connections + + +class TestVanillaRegionsConnectionsWithGingerIsland(unittest.TestCase): + def test_region_exits_lead_somewhere(self): + for region in vanilla_data.regions_with_ginger_island_by_name.values(): + with self.subTest(region=region.name): + for exit_ in region.exits: + self.assertIn(exit_, vanilla_data.connections_with_ginger_island_by_name, + f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for connection in vanilla_data.connections_with_ginger_island_by_name.values(): + with self.subTest(connection=connection.name): + self.assertIn(connection.destination, vanilla_data.regions_with_ginger_island_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") + + +class TestVanillaRegionsConnectionsWithoutGingerIsland(unittest.TestCase): + def test_region_exits_lead_somewhere(self): + for region in vanilla_data.regions_without_ginger_island_by_name.values(): + with self.subTest(region=region.name): + for exit_ in region.exits: + self.assertIn(exit_, vanilla_data.connections_without_ginger_island_by_name, + f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for connection in vanilla_data.connections_without_ginger_island_by_name.values(): + with self.subTest(connection=connection.name): + self.assertIn(connection.destination, vanilla_data.regions_without_ginger_island_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") + + +class TestModsConnections(unittest.TestCase): + options = { + options.ExcludeGingerIsland: options.ExcludeGingerIsland.option_false, + options.Mods: frozenset(options.Mods.valid_keys) + } + content = create_content(fill_dataclass_with_default(options)) + all_regions_by_name = create_all_regions(content.registered_packs) + all_connections_by_name = create_all_connections(content.registered_packs) + + def test_region_exits_lead_somewhere(self): + for mod_region_data in region_data_by_content_pack.values(): + for region in mod_region_data.regions: + if MergeFlag.REMOVE_EXITS in region.flag: + continue + + with self.subTest(mod=mod_region_data.mod_name, region=region.name): + for exit_ in region.exits: + self.assertIn(exit_, self.all_connections_by_name, f"{region.name} is leading to {exit_} but it does not exist.") + + def test_connection_lead_somewhere(self): + for mod_region_data in region_data_by_content_pack.values(): + for connection in mod_region_data.connections: + with self.subTest(mod=mod_region_data.mod_name, connection=connection.name): + self.assertIn(connection.destination, self.all_regions_by_name, + f"{connection.name} is leading to {connection.destination} but it does not exist.") diff --git a/worlds/stardew_valley/test/regions/__init__.py b/worlds/stardew_valley/test/regions/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/worlds/stardew_valley/test/rules/TestArcades.py b/worlds/stardew_valley/test/rules/TestArcades.py index 5fdf7df13d5d..407f299992c3 100644 --- a/worlds/stardew_valley/test/rules/TestArcades.py +++ b/worlds/stardew_valley/test/rules/TestArcades.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ... import options -from ...test import SVTestBase class TestArcadeMachinesLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBooks.py b/worlds/stardew_valley/test/rules/TestBooks.py index 4cd84a77a278..eb26b2744492 100644 --- a/worlds/stardew_valley/test/rules/TestBooks.py +++ b/worlds/stardew_valley/test/rules/TestBooks.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ... import options -from ...test import SVTestBase class TestBooksLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBuildings.py b/worlds/stardew_valley/test/rules/TestBuildings.py index 8eeb9d295af1..0b1f41d2c56b 100644 --- a/worlds/stardew_valley/test/rules/TestBuildings.py +++ b/worlds/stardew_valley/test/rules/TestBuildings.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ...options import BuildingProgression, FarmType -from ...test import SVTestBase class TestBuildingLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestBundles.py b/worlds/stardew_valley/test/rules/TestBundles.py index 918cb8aba6a7..357269a25ba0 100644 --- a/worlds/stardew_valley/test/rules/TestBundles.py +++ b/worlds/stardew_valley/test/rules/TestBundles.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import options from ...options import BundleRandomization from ...strings.bundle_names import BundleName -from ...test import SVTestBase class TestBundlesLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestCookingRecipes.py b/worlds/stardew_valley/test/rules/TestCookingRecipes.py index b3aafdb690a3..b468a72d4117 100644 --- a/worlds/stardew_valley/test/rules/TestCookingRecipes.py +++ b/worlds/stardew_valley/test/rules/TestCookingRecipes.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ... import options from ...options import BuildingProgression, ExcludeGingerIsland, Chefsanity -from ...test import SVTestBase class TestRecipeLearnLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestCraftingRecipes.py b/worlds/stardew_valley/test/rules/TestCraftingRecipes.py index 94d6bc145ae2..f875dc539d46 100644 --- a/worlds/stardew_valley/test/rules/TestCraftingRecipes.py +++ b/worlds/stardew_valley/test/rules/TestCraftingRecipes.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import options from ...data.craftable_data import all_crafting_recipes_by_name from ...options import BuildingProgression, ExcludeGingerIsland, Craftsanity, SeasonRandomization -from ...test import SVTestBase class TestCraftsanityLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestDonations.py b/worlds/stardew_valley/test/rules/TestDonations.py index d50f87d3e9a6..2cddcad39521 100644 --- a/worlds/stardew_valley/test/rules/TestDonations.py +++ b/worlds/stardew_valley/test/rules/TestDonations.py @@ -1,8 +1,8 @@ +from ..bases import SVTestBase from ... import options from ...locations import locations_by_tag, LocationTags, location_table from ...strings.entrance_names import Entrance from ...strings.region_names import Region -from ...test import SVTestBase class TestDonationLogicAll(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestFishing.py b/worlds/stardew_valley/test/rules/TestFishing.py index 6a6a4bb3159d..22e6321a7a93 100644 --- a/worlds/stardew_valley/test/rules/TestFishing.py +++ b/worlds/stardew_valley/test/rules/TestFishing.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ...options import SeasonRandomization, Fishsanity, ExcludeGingerIsland, SkillProgression, ToolProgression, ElevatorProgression, SpecialOrderLocations from ...strings.fish_names import Fish -from ...test import SVTestBase class TestNeedRegionToCatchFish(SVTestBase): @@ -8,7 +8,7 @@ class TestNeedRegionToCatchFish(SVTestBase): SeasonRandomization.internal_name: SeasonRandomization.option_disabled, ElevatorProgression.internal_name: ElevatorProgression.option_vanilla, SkillProgression.internal_name: SkillProgression.option_vanilla, - ToolProgression.internal_name: ToolProgression.option_vanilla, + ToolProgression.internal_name: ToolProgression.option_progressive, Fishsanity.internal_name: Fishsanity.option_all, ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false, SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi, @@ -18,7 +18,7 @@ def test_catch_fish_requires_region_unlock(self): fish_and_items = { Fish.crimsonfish: ["Beach Bridge"], Fish.void_salmon: ["Railroad Boulder Removed", "Dark Talisman"], - Fish.woodskip: ["Glittering Boulder Removed", "Progressive Weapon"], # For the ores to get the axe upgrades + Fish.woodskip: ["Progressive Axe", "Progressive Axe", "Progressive Weapon"], # For the ores to get the axe upgrades Fish.mutant_carp: ["Rusty Key"], Fish.slimejack: ["Railroad Boulder Removed", "Rusty Key"], Fish.lionfish: ["Boat Repair"], @@ -26,8 +26,8 @@ def test_catch_fish_requires_region_unlock(self): Fish.stingray: ["Boat Repair", "Island Resort"], Fish.ghostfish: ["Progressive Weapon"], Fish.stonefish: ["Progressive Weapon"], - Fish.ice_pip: ["Progressive Weapon", "Progressive Weapon"], - Fish.lava_eel: ["Progressive Weapon", "Progressive Weapon", "Progressive Weapon"], + Fish.ice_pip: ["Progressive Weapon", "Progressive Weapon", "Progressive Pickaxe", "Progressive Pickaxe"], + Fish.lava_eel: ["Progressive Weapon", "Progressive Weapon", "Progressive Weapon", "Progressive Pickaxe", "Progressive Pickaxe", "Progressive Pickaxe"], Fish.sandfish: ["Bus Repair"], Fish.scorpion_carp: ["Desert Obelisk"], # Starting the extended family quest requires having caught all the legendaries before, so they all have the rules of every other legendary @@ -37,6 +37,7 @@ def test_catch_fish_requires_region_unlock(self): Fish.legend_ii: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"], Fish.ms_angler: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"], } + self.collect("Progressive Fishing Rod", 4) self.original_state = self.multiworld.state.copy() for fish in fish_and_items: with self.subTest(f"Region rules for {fish}"): diff --git a/worlds/stardew_valley/test/rules/TestFriendship.py b/worlds/stardew_valley/test/rules/TestFriendship.py index 9cd3127aa355..dc5935580ad0 100644 --- a/worlds/stardew_valley/test/rules/TestFriendship.py +++ b/worlds/stardew_valley/test/rules/TestFriendship.py @@ -1,5 +1,5 @@ +from ..bases import SVTestBase from ...options import SeasonRandomization, Friendsanity, FriendsanityHeartSize -from ...test import SVTestBase class TestFriendsanityDatingRules(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestMuseum.py b/worlds/stardew_valley/test/rules/TestMuseum.py index 35dad8f43ebc..1a22e8800c5d 100644 --- a/worlds/stardew_valley/test/rules/TestMuseum.py +++ b/worlds/stardew_valley/test/rules/TestMuseum.py @@ -1,12 +1,16 @@ from collections import Counter +from unittest.mock import patch -from ...options import Museumsanity -from .. import SVTestBase +from ..bases import SVTestBase +from ..options import presets +from ... import options, StardewLogic, StardewRule +from ...logic.museum_logic import MuseumLogic +from ...stardew_rule import true_, LiteralStardewRule class TestMuseumMilestones(SVTestBase): options = { - Museumsanity.internal_name: Museumsanity.option_milestones + options.Museumsanity: options.Museumsanity.option_milestones } def test_50_milestone(self): @@ -14,3 +18,45 @@ def test_50_milestone(self): milestone_rule = self.world.logic.museum.can_find_museum_items(50) self.assert_rule_false(milestone_rule, self.multiworld.state) + + +class DisabledMuseumRule(LiteralStardewRule): + value = False + + def __or__(self, other) -> StardewRule: + return other + + def __and__(self, other) -> StardewRule: + return self + + def __repr__(self): + return "Disabled Museum Rule" + + +class TestMuseumsanityDisabledExcludesMuseumDonationsFromOtherLocations(SVTestBase): + options = { + **presets.allsanity_mods_6_x_x(), + options.Museumsanity.internal_name: options.Museumsanity.option_none + } + + def test_museum_donations_are_never_required_in_any_locations(self): + with patch("worlds.stardew_valley.logic.museum_logic.MuseumLogic") as MockMuseumLogic: + museum_logic: MuseumLogic = MockMuseumLogic.return_value + museum_logic.can_donate_museum_items.return_value = DisabledMuseumRule() + museum_logic.can_donate_museum_artifacts.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_artifacts.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_minerals.return_value = DisabledMuseumRule() + museum_logic.can_find_museum_items.return_value = DisabledMuseumRule() + museum_logic.can_complete_museum.return_value = DisabledMuseumRule() + museum_logic.can_donate.return_value = DisabledMuseumRule() + # Allowing calls to museum rules since a lot of other logic depends on it, for minerals for instance. + museum_logic.can_find_museum_item.return_value = true_ + + regions = {region.name for region in self.multiworld.regions} + self.world.logic = StardewLogic(self.player, self.world.options, self.world.content, regions) + self.world.set_rules() + + self.collect_everything() + for location in self.get_real_locations(): + with self.subTest(location.name): + self.assert_can_reach_location(location) diff --git a/worlds/stardew_valley/test/rules/TestShipping.py b/worlds/stardew_valley/test/rules/TestShipping.py index fc61ae8e2a99..c1f29d934255 100644 --- a/worlds/stardew_valley/test/rules/TestShipping.py +++ b/worlds/stardew_valley/test/rules/TestShipping.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ...locations import LocationTags, location_table from ...options import BuildingProgression, Shipsanity -from ...test import SVTestBase class TestShipsanityNone(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestSkills.py b/worlds/stardew_valley/test/rules/TestSkills.py index a5957488a1a2..fd513a1becc7 100644 --- a/worlds/stardew_valley/test/rules/TestSkills.py +++ b/worlds/stardew_valley/test/rules/TestSkills.py @@ -1,7 +1,7 @@ +from ..bases import SVTestBase from ... import HasProgressionPercent, StardewLogic from ...options import ToolProgression, SkillProgression, Mods from ...strings.skill_names import all_skills, all_vanilla_skills, Skill -from ...test import SVTestBase class TestSkillProgressionVanilla(SVTestBase): diff --git a/worlds/stardew_valley/test/rules/TestStateRules.py b/worlds/stardew_valley/test/rules/TestStateRules.py index db56e8220c05..57573c7f8b55 100644 --- a/worlds/stardew_valley/test/rules/TestStateRules.py +++ b/worlds/stardew_valley/test/rules/TestStateRules.py @@ -1,4 +1,4 @@ -from .. import SVTestBase +from ..bases import SVTestBase from ..options.presets import allsanity_mods_6_x_x from ...stardew_rule import HasProgressionPercent diff --git a/worlds/stardew_valley/test/rules/TestTools.py b/worlds/stardew_valley/test/rules/TestTools.py index bda29e3d74c6..54b9ec8f2f26 100644 --- a/worlds/stardew_valley/test/rules/TestTools.py +++ b/worlds/stardew_valley/test/rules/TestTools.py @@ -1,6 +1,6 @@ from collections import Counter -from .. import SVTestBase +from ..bases import SVTestBase from ... import options from ...options import ToolProgression, SeasonRandomization from ...strings.entrance_names import Entrance diff --git a/worlds/stardew_valley/test/rules/TestWeapons.py b/worlds/stardew_valley/test/rules/TestWeapons.py index 383f26e841d2..e95e706ded12 100644 --- a/worlds/stardew_valley/test/rules/TestWeapons.py +++ b/worlds/stardew_valley/test/rules/TestWeapons.py @@ -1,6 +1,6 @@ +from ..bases import SVTestBase from ... import options from ...options import ToolProgression -from ...test import SVTestBase class TestWeaponsLogic(SVTestBase): diff --git a/worlds/stardew_valley/test/script/benchmark_locations.py b/worlds/stardew_valley/test/script/benchmark_locations.py index 04553e39968e..3dcfc4dbebfb 100644 --- a/worlds/stardew_valley/test/script/benchmark_locations.py +++ b/worlds/stardew_valley/test/script/benchmark_locations.py @@ -15,8 +15,9 @@ from BaseClasses import CollectionState, Location from Utils import init_logging -from worlds.stardew_valley.stardew_rule.rule_explain import explain -from ... import test +from ..bases import setup_solo_multiworld +from ..options import presets +from ...stardew_rule.rule_explain import explain def run_locations_benchmark(): @@ -56,12 +57,12 @@ def main(self): parser.add_argument('--state', help="Define the state in which the location will be benchmarked.", type=str, default=None) args = parser.parse_args() options_set = args.options - options = getattr(test, options_set)() + options = getattr(presets, options_set)() seed = args.seed location = args.location state = args.state - multiworld = test.setup_solo_multiworld(options, seed) + multiworld = setup_solo_multiworld(options, seed) gc.collect() if location: diff --git a/worlds/stardew_valley/test/stability/StabilityOutputScript.py b/worlds/stardew_valley/test/stability/StabilityOutputScript.py index 9b4b608d4e0d..29fd90309511 100644 --- a/worlds/stardew_valley/test/stability/StabilityOutputScript.py +++ b/worlds/stardew_valley/test/stability/StabilityOutputScript.py @@ -1,7 +1,7 @@ import argparse import json -from .. import setup_solo_multiworld +from ..bases import setup_solo_multiworld from ..options.presets import allsanity_mods_6_x_x_exclude_disabled from ...options import FarmType, EntranceRandomization diff --git a/worlds/stardew_valley/test/stability/TestStability.py b/worlds/stardew_valley/test/stability/TestStability.py index b4d0f30ea51f..f3dfb9fdaae7 100644 --- a/worlds/stardew_valley/test/stability/TestStability.py +++ b/worlds/stardew_valley/test/stability/TestStability.py @@ -5,7 +5,7 @@ import unittest from BaseClasses import get_seed -from .. import SVTestCase +from ..bases import SVTestCase # at 0x102ca98a0> lambda_regex = re.compile(r"^ at (.*)>$") diff --git a/worlds/stardew_valley/test/stability/TestUniversalTracker.py b/worlds/stardew_valley/test/stability/TestUniversalTracker.py index 0268d9e515ec..301abfff22bc 100644 --- a/worlds/stardew_valley/test/stability/TestUniversalTracker.py +++ b/worlds/stardew_valley/test/stability/TestUniversalTracker.py @@ -1,9 +1,11 @@ import unittest from unittest.mock import Mock -from .. import SVTestBase, fill_namespace_with_default, skip_long_tests +from ..bases import skip_long_tests, SVTestBase from ..options.presets import allsanity_mods_6_x_x -from ... import STARDEW_VALLEY, FarmType, BundleRandomization, EntranceRandomization +from ..options.utils import fill_namespace_with_default +from ... import STARDEW_VALLEY +from ...options import FarmType, BundleRandomization, EntranceRandomization @unittest.skipIf(skip_long_tests(), "Long tests disabled") @@ -35,9 +37,6 @@ def test_all_locations_and_items_are_the_same_between_two_generations(self): args.multi = 1 args.race = None args.plando_options = self.multiworld.plando_options - args.plando_items = self.multiworld.plando_items - args.plando_texts = self.multiworld.plando_texts - args.plando_connections = self.multiworld.plando_connections args.game = self.multiworld.game args.name = self.multiworld.player_name args.sprite = {} diff --git a/worlds/subnautica/rules.py b/worlds/subnautica/rules.py index ea9ec6a8058f..8f90af9b1385 100644 --- a/worlds/subnautica/rules.py +++ b/worlds/subnautica/rules.py @@ -254,8 +254,8 @@ def can_access_location(state: "CollectionState", player: int, loc: LocationDict return get_max_depth(state, player) >= depth -def set_location_rule(world, player: int, loc: LocationDict): - set_rule(world.get_location(loc["name"], player), lambda state: can_access_location(state, player, loc)) +def set_location_rule(world: "SubnauticaWorld", player: int, loc: LocationDict): + set_rule(world.get_location(loc["name"]), lambda state: can_access_location(state, player, loc)) def can_scan_creature(state: "CollectionState", player: int, creature: str) -> bool: @@ -264,8 +264,8 @@ def can_scan_creature(state: "CollectionState", player: int, creature: str) -> b return get_max_depth(state, player) >= all_creatures[creature] -def set_creature_rule(world, player: int, creature_name: str) -> "Location": - location = world.get_location(creature_name + suffix, player) +def set_creature_rule(world: "SubnauticaWorld", player: int, creature_name: str) -> "Location": + location = world.get_location(creature_name + suffix) set_rule(location, lambda state: can_scan_creature(state, player, creature_name)) return location @@ -290,16 +290,15 @@ def get_aggression_rule(option: AggressiveScanLogic, creature_name: str) -> \ def set_rules(subnautica_world: "SubnauticaWorld"): player = subnautica_world.player - multiworld = subnautica_world.multiworld for loc in location_table.values(): - set_location_rule(multiworld, player, loc) + set_location_rule(subnautica_world, player, loc) if subnautica_world.creatures_to_scan: - option = multiworld.worlds[player].options.creature_scan_logic + option = subnautica_world.options.creature_scan_logic for creature_name in subnautica_world.creatures_to_scan: - location = set_creature_rule(multiworld, player, creature_name) + location = set_creature_rule(subnautica_world, player, creature_name) if creature_name in containment: # there is no other way, hard-required containment add_rule(location, lambda state: has_containment(state, player)) elif creature_name in aggressive: @@ -309,7 +308,7 @@ def set_rules(subnautica_world: "SubnauticaWorld"): lambda state, loc_rule=get_aggression_rule(option, creature_name): loc_rule(state, player)) # Victory locations - set_rule(multiworld.get_location("Neptune Launch", player), + set_rule(subnautica_world.get_location("Neptune Launch"), lambda state: get_max_depth(state, player) >= 1444 and has_mobile_vehicle_bay(state, player) and @@ -322,14 +321,14 @@ def set_rules(subnautica_world: "SubnauticaWorld"): state.has("Ion Battery", player) and has_cyclops_shield(state, player)) - set_rule(multiworld.get_location("Disable Quarantine", player), + set_rule(subnautica_world.get_location("Disable Quarantine"), lambda state: get_max_depth(state, player) >= 1444) - set_rule(multiworld.get_location("Full Infection", player), + set_rule(subnautica_world.get_location("Full Infection"), lambda state: get_max_depth(state, player) >= 900) - room = multiworld.get_location("Aurora Drive Room - Upgrade Console", player) - set_rule(multiworld.get_location("Repair Aurora Drive", player), + room = subnautica_world.get_location("Aurora Drive Room - Upgrade Console") + set_rule(subnautica_world.get_location("Repair Aurora Drive"), lambda state: room.can_reach(state)) - multiworld.completion_condition[player] = lambda state: state.has("Victory", player) + subnautica_world.multiworld.completion_condition[player] = lambda state: state.has("Victory", player) diff --git a/worlds/terraria/Rules.dsv b/worlds/terraria/Rules.dsv index 9ae82d747243..6bc1183e598d 100644 --- a/worlds/terraria/Rules.dsv +++ b/worlds/terraria/Rules.dsv @@ -151,7 +151,7 @@ Magma Stone; // Evil Smashing, Poppet!; Achievement; Arms Dealer; Npc; -Leading Landlord; Achievement; Nurse & Arms Dealer; // The logic is way more complex, but that doesn't affect anything +Leading Landlord; Achievement | Not Getfixedboi; Nurse & Arms Dealer; // The logic is way more complex, but that doesn't affect anything Completely Awesome; Achievement; Arms Dealer; Illegal Gun Parts; ; Arms Dealer | Flamethrower; diff --git a/worlds/terraria/docs/setup_en.md b/worlds/terraria/docs/setup_en.md index 55a4df1df30d..b41595533743 100644 --- a/worlds/terraria/docs/setup_en.md +++ b/worlds/terraria/docs/setup_en.md @@ -10,13 +10,6 @@ and [tModLoader](https://store.steampowered.com/app/1281930/tModLoader/) on Stea 1. Subscribe to [the mod](https://steamcommunity.com/sharedfiles/filedetails/?id=2922217554) on Steam 2. Open tModLoader 3. Go to **Workshop -> Manage Mods** and enable the Archipelago mod - - If tModLoader states that you need version 1.4.3, follow the following steps - 1. Close tModLoader - 2. Right-Click tModLoader in Steam and select **Properties** - 3. Navigate to **Betas -> Beta Participation** - 4. Select **1.4.3-legacy - Legacy - Stable tModLoader for Terraria 1.4.3** - 5. Update tModLoader through Steam - 6. Open tModLoader and navigate back to the **Manage Mods** menu 4. tModLoader will say that it needs to refresh; exit this menu, and it will do this automatically 5. Once tModLoader finishes loading, the Archipelago mod is finished installing; you can now [connect to an Archipelago game](#joining-an-archipelago-game-in-terraria). diff --git a/worlds/timespinner/Locations.py b/worlds/timespinner/Locations.py index 644304733a9e..21e5501e580f 100644 --- a/worlds/timespinner/Locations.py +++ b/worlds/timespinner/Locations.py @@ -92,7 +92,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Military Fortress (hangar)', 'Military Fortress: Pedestal', 1337065, lambda state: state.has('Water Mask', player) if flooded.flood_lab else (logic.has_doublejump_of_npc(state) or logic.has_forwarddash_doublejump(state))), LocationData('The lab', 'Lab: Coffee break', 1337066), LocationData('The lab', 'Lab: Lower trash right', 1337067, logic.has_doublejump), - LocationData('The lab', 'Lab: Lower trash left', 1337068, lambda state: logic.has_doublejump_of_npc(state) if options.lock_key_amadeus else logic.has_upwarddash ), + LocationData('The lab', 'Lab: Lower trash left', 1337068, lambda state: logic.has_doublejump_of_npc(state) if options.lock_key_amadeus else logic.has_upwarddash(state) ), LocationData('The lab', 'Lab: Below lab entrance', 1337069, logic.has_doublejump), LocationData('The lab (power off)', 'Lab: Trash jump room', 1337070, lambda state: not options.lock_key_amadeus or logic.has_doublejump_of_npc(state) ), LocationData('The lab (power off)', 'Lab: Dynamo Works', 1337071, lambda state: not options.lock_key_amadeus or (state.has_all(('Lab Access Research', 'Lab Access Dynamo'), player)) ), @@ -100,7 +100,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('The lab (power off)', 'Lab: Experiment #13', 1337073, lambda state: not options.lock_key_amadeus or state.has('Lab Access Experiment', player) ), LocationData('The lab (upper)', 'Lab: Download and chest room chest', 1337074), LocationData('The lab (upper)', 'Lab: Lab secret', 1337075, logic.can_break_walls), - LocationData('The lab (power off)', 'Lab: Spider Hell', 1337076, lambda state: logic.has_keycard_A and not options.lock_key_amadeus or state.has('Lab Access Research', player)), + LocationData('The lab (power off)', 'Lab: Spider Hell', 1337076, lambda state: logic.has_keycard_A(state) and not options.lock_key_amadeus or state.has('Lab Access Research', player)), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard bottom chest', 1337077), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard floor secret', 1337078, lambda state: logic.has_upwarddash(state) and logic.can_break_walls(state)), LocationData('Emperors tower', 'Emperor\'s Tower: Courtyard upper chest', 1337079, lambda state: logic.has_upwarddash(state)), @@ -150,10 +150,10 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Jackpot room chest 3', 1337118, lambda state: flooded.flood_maw or logic.has_forwarddash_doublejump(state)), LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Jackpot room chest 4', 1337119, lambda state: flooded.flood_maw or logic.has_forwarddash_doublejump(state)), LocationData('Caves of Banishment (upper)', 'Caves of Banishment (Maw): Pedestal', 1337120, lambda state: not flooded.flood_maw or state.has('Water Mask', player)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Last chance before Maw', 1337121, lambda state: state.has('Water Mask', player) if flooded.flood_maw else logic.has_doublejump(state)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Plasma Crystal', 1337173, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) and (not flooded.flood_maw or state.has('Water Mask', player))), - LocationData('Caves of Banishment (Maw)', 'Killed Maw', EventId, lambda state: state.has('Gas Mask', player) and (not flooded.flood_maw or state.has('Water Mask', player))), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Mineshaft', 1337122, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) and (not flooded.flood_maw or state.has('Water Mask', player))), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Last chance before Maw', 1337121, lambda state: flooded.flood_maw or logic.has_doublejump(state)), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Plasma Crystal', 1337173, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player)), + LocationData('Caves of Banishment (Maw)', 'Killed Maw', EventId, lambda state: state.has('Gas Mask', player)), + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Mineshaft', 1337122, lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player)), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Wyvern room', 1337123), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Siren room above water chest', 1337124), LocationData('Caves of Banishment (Sirens)', 'Caves of Banishment (Sirens): Siren room underwater left chest', 1337125, lambda state: state.has('Water Mask', player)), @@ -251,7 +251,7 @@ def get_location_datas(player: Optional[int], options: Optional[TimespinnerOptio LocationData('Royal towers (upper)', 'Royal Towers: Journal - Top Struggle Juggle Base (War of the Sisters)', 1337195), LocationData('Royal towers (upper)', 'Royal Towers: Journal - Aelana Boss (Stained Letter)', 1337196), LocationData('Royal towers', 'Royal Towers: Journal - Near Bottom Struggle Juggle (Mission Findings)', 1337197, lambda state: flooded.flood_courtyard or logic.has_doublejump_of_npc(state)), - LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Journal - Lower Left Caves (Naivety)', 1337198, lambda state: not flooded.flood_maw or state.has('Water Mask', player)) + LocationData('Caves of Banishment (Maw)', 'Caves of Banishment (Maw): Journal - Lower Left Caves (Naivety)', 1337198) ) # 1337199 - 1337232 Reserved for future use diff --git a/worlds/timespinner/PreCalculatedWeights.py b/worlds/timespinner/PreCalculatedWeights.py index 3ad7c2c78af0..96551ea7f152 100644 --- a/worlds/timespinner/PreCalculatedWeights.py +++ b/worlds/timespinner/PreCalculatedWeights.py @@ -88,12 +88,15 @@ def get_pyramid_keys_unlocks(options: TimespinnerOptions, random: Random, if options.risky_warps: past_teleportation_gates.append("GateLakeSereneLeft") - present_teleportation_gates.append("GateDadsTower") if not is_xarion_flooded: present_teleportation_gates.append("GateXarion") - if not is_lab_flooded: - present_teleportation_gates.append("GateLabEntrance") + # Prevent going past the lazers without a way to the past + if options.unchained_keys or options.prism_break or not options.pyramid_start: + present_teleportation_gates.append("GateDadsTower") + if not is_lab_flooded: + present_teleportation_gates.append("GateLabEntrance") + # Prevent getting stuck in the past without a way back to the future if options.inverted or (options.pyramid_start and not options.back_to_the_future): all_gates: Tuple[str, ...] = present_teleportation_gates else: diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py index 51b1688f1a6d..b9b1d10445ce 100644 --- a/worlds/timespinner/Regions.py +++ b/worlds/timespinner/Regions.py @@ -115,7 +115,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'The lab', 'The lab (power off)', lambda state: options.lock_key_amadeus or logic.has_doublejump_of_npc(state)) connect(world, player, 'The lab (power off)', 'The lab', lambda state: not flooded.flood_lab or state.has('Water Mask', player)) connect(world, player, 'The lab (power off)', 'The lab (upper)', lambda state: logic.has_forwarddash_doublejump(state) and ((not options.lock_key_amadeus) or state.has('Lab Access Genza', player))) - connect(world, player, 'The lab (upper)', 'The lab (power off)') + connect(world, player, 'The lab (upper)', 'The lab (power off)', lambda state: options.lock_key_amadeus and state.has('Lab Access Genza', player)) connect(world, player, 'The lab (upper)', 'Emperors tower', logic.has_forwarddash_doublejump) connect(world, player, 'The lab (upper)', 'Ancient Pyramid (entrance)', lambda state: state.has_all({'Timespinner Wheel', 'Timespinner Spindle', 'Timespinner Gear 1', 'Timespinner Gear 2', 'Timespinner Gear 3'}, player)) connect(world, player, 'Emperors tower', 'The lab (upper)') @@ -141,7 +141,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'Lower Lake Serene', 'Left Side forest Caves') connect(world, player, 'Lower Lake Serene', 'Caves of Banishment (upper)', lambda state: flooded.flood_lake_serene or logic.has_doublejump(state)) connect(world, player, 'Caves of Banishment (upper)', 'Lower Lake Serene', lambda state: not flooded.flood_lake_serene or state.has('Water Mask', player)) - connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: logic.has_doublejump(state) or state.has_any({'Gas Mask', 'Talaria Attachment'} or logic.has_teleport(state), player)) + connect(world, player, 'Caves of Banishment (upper)', 'Caves of Banishment (Maw)', lambda state: not flooded.flood_maw or state.has('Water Mask', player)) connect(world, player, 'Caves of Banishment (upper)', 'Space time continuum', logic.has_teleport) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (upper)', lambda state: logic.has_doublejump(state) if not flooded.flood_maw else state.has('Water Mask', player)) connect(world, player, 'Caves of Banishment (Maw)', 'Caves of Banishment (Sirens)', lambda state: state.has_any({'Gas Mask', 'Talaria Attachment'}, player) ) @@ -178,7 +178,7 @@ def create_regions_and_locations(world: MultiWorld, player: int, options: Timesp connect(world, player, 'Space time continuum', 'Upper Lake Serene', lambda state: logic.can_teleport_to(state, "Past", "GateLakeSereneLeft")) connect(world, player, 'Space time continuum', 'Left Side forest Caves', lambda state: logic.can_teleport_to(state, "Past", "GateLakeSereneRight")) connect(world, player, 'Space time continuum', 'Refugee Camp', lambda state: logic.can_teleport_to(state, "Past", "GateAccessToPast")) - connect(world, player, 'Space time continuum', 'Castle Ramparts', lambda state: logic.can_teleport_to(state, "Past", "GateCastleRamparts")) + connect(world, player, 'Space time continuum', 'Forest', lambda state: logic.can_teleport_to(state, "Past", "GateCastleRamparts")) connect(world, player, 'Space time continuum', 'Castle Keep', lambda state: logic.can_teleport_to(state, "Past", "GateCastleKeep")) connect(world, player, 'Space time continuum', 'Royal towers (lower)', lambda state: logic.can_teleport_to(state, "Past", "GateRoyalTowers")) connect(world, player, 'Space time continuum', 'Caves of Banishment (Maw)', lambda state: logic.can_teleport_to(state, "Past", "GateMaw")) diff --git a/worlds/timespinner/__init__.py b/worlds/timespinner/__init__.py index 4d1efc41e53f..77314d40ec7b 100644 --- a/worlds/timespinner/__init__.py +++ b/worlds/timespinner/__init__.py @@ -42,6 +42,7 @@ class TimespinnerWorld(World): topology_present = True web = TimespinnerWebWorld() required_client_version = (0, 4, 2) + ut_can_gen_without_yaml = True item_name_to_id = {name: data.code for name, data in item_table.items()} location_name_to_id = {location.name: location.code for location in get_location_datas(-1, None, None)} diff --git a/worlds/tunic/__init__.py b/worlds/tunic/__init__.py index 9d97e5711bf7..84f1338ad5e3 100644 --- a/worlds/tunic/__init__.py +++ b/worlds/tunic/__init__.py @@ -1,3 +1,4 @@ +from dataclasses import fields from typing import Dict, List, Any, Tuple, TypedDict, ClassVar, Union, Set, TextIO from logging import warning from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState @@ -7,17 +8,18 @@ from .rules import set_location_rules, set_region_rules, randomize_ability_unlocks, gold_hexagon from .er_rules import set_er_location_rules from .regions import tunic_regions -from .er_scripts import create_er_regions +from .er_scripts import create_er_regions, verify_plando_directions from .grass import grass_location_table, grass_location_name_to_id, grass_location_name_groups, excluded_grass_locations from .er_data import portal_mapping, RegionInfo, tunic_er_regions from .options import (TunicOptions, EntranceRando, tunic_option_groups, tunic_option_presets, TunicPlandoConnections, LaurelsLocation, LogicRules, LaurelsZips, IceGrappling, LadderStorage, check_options, - get_hexagons_in_pool, HexagonQuestAbilityUnlockType) + get_hexagons_in_pool, HexagonQuestAbilityUnlockType, EntranceLayout) from .breakables import breakable_location_name_to_id, breakable_location_groups, breakable_location_table from .combat_logic import area_data, CombatState +from . import ut_stuff from worlds.AutoWorld import WebWorld, World -from Options import PlandoConnection, OptionError -from settings import Group, Bool +from Options import PlandoConnection, OptionError, PerGameCommonOptions, Removed, Range +from settings import Group, Bool, FilePath class TunicSettings(Group): @@ -26,9 +28,15 @@ class DisableLocalSpoiler(Bool): class LimitGrassRando(Bool): """Limits the impact of Grass Randomizer on the multiworld by disallowing local_fill percentages below 95.""" + + class UTPoptrackerPath(FilePath): + """Path to the user's TUNIC Poptracker Pack.""" + description = "TUNIC Poptracker Pack zip file" + required = False disable_local_spoiler: Union[DisableLocalSpoiler, bool] = False limit_grass_rando: Union[LimitGrassRando, bool] = True + ut_poptracker_path: Union[UTPoptrackerPath, str] = UTPoptrackerPath() class TunicWeb(WebWorld): @@ -61,8 +69,9 @@ class SeedGroup(TypedDict): ice_grappling: int # ice_grappling value ladder_storage: int # ls value laurels_at_10_fairies: bool # laurels location value - fixed_shop: bool # fixed shop value - plando: TunicPlandoConnections # consolidated plando connections for the seed group + entrance_layout: int # entrance layout value + has_decoupled_enabled: bool # for checking that players don't have conflicting options + plando: List[PlandoConnection] # consolidated plando connections for the seed group class TunicWorld(World): @@ -95,7 +104,7 @@ class TunicWorld(World): tunic_portal_pairs: Dict[str, str] er_portal_hints: Dict[int, str] seed_groups: Dict[str, SeedGroup] = {} - shop_num: int = 1 # need to make it so that you can walk out of shops, but also that they aren't all connected + used_shop_numbers: Set[int] er_regions: Dict[str, RegionInfo] # absolutely needed so outlet regions work # for the local_fill option @@ -111,6 +120,7 @@ class TunicWorld(World): using_ut: bool # so we can check if we're using UT only once passthrough: Dict[str, Any] ut_can_gen_without_yaml = True # class var that tells it to ignore the player yaml + tracker_world: ClassVar = ut_stuff.tracker_world def generate_early(self) -> None: try: @@ -119,61 +129,54 @@ def generate_early(self) -> None: raise Exception("You have a TUNIC APWorld in your lib/worlds folder and custom_worlds folder.\n" "This would cause an error at the end of generation.\n" "Please remove one of them, most likely the one in lib/worlds.") + + if self.options.all_random: + for option_name in (attr.name for attr in fields(TunicOptions) + if attr not in fields(PerGameCommonOptions)): + option = getattr(self.options, option_name) + if option_name == "all_random": + continue + if isinstance(option, Removed): + continue + if option.supports_weighting: + if isinstance(option, Range): + option.value = self.random.randint(option.range_start, option.range_end) + else: + option.value = self.random.choice(list(option.name_lookup)) check_options(self) - if self.options.logic_rules >= LogicRules.option_no_major_glitches: - self.options.laurels_zips.value = LaurelsZips.option_true - self.options.ice_grappling.value = IceGrappling.option_medium - if self.options.logic_rules.value == LogicRules.option_unrestricted: - self.options.ladder_storage.value = LadderStorage.option_medium - self.er_regions = tunic_er_regions.copy() + if self.options.plando_connections and not self.options.entrance_rando: + self.options.plando_connections.value = () if self.options.plando_connections: - for index, cxn in enumerate(self.options.plando_connections): - # making shops second to simplify other things later - if cxn.entrance.startswith("Shop"): - replacement = PlandoConnection(cxn.exit, "Shop Portal", "both") - self.options.plando_connections.value.remove(cxn) - self.options.plando_connections.value.insert(index, replacement) - elif cxn.exit.startswith("Shop"): - replacement = PlandoConnection(cxn.entrance, "Shop Portal", "both") - self.options.plando_connections.value.remove(cxn) - self.options.plando_connections.value.insert(index, replacement) - - # Universal tracker stuff, shouldn't do anything in standard gen - if hasattr(self.multiworld, "re_gen_passthrough"): - if "TUNIC" in self.multiworld.re_gen_passthrough: - self.using_ut = True - self.passthrough = self.multiworld.re_gen_passthrough["TUNIC"] - self.options.start_with_sword.value = self.passthrough["start_with_sword"] - self.options.keys_behind_bosses.value = self.passthrough["keys_behind_bosses"] - self.options.sword_progression.value = self.passthrough["sword_progression"] - self.options.ability_shuffling.value = self.passthrough["ability_shuffling"] - self.options.laurels_zips.value = self.passthrough["laurels_zips"] - self.options.ice_grappling.value = self.passthrough["ice_grappling"] - self.options.ladder_storage.value = self.passthrough["ladder_storage"] - self.options.ladder_storage_without_items = self.passthrough["ladder_storage_without_items"] - self.options.lanternless.value = self.passthrough["lanternless"] - self.options.maskless.value = self.passthrough["maskless"] - self.options.hexagon_quest.value = self.passthrough["hexagon_quest"] - self.options.hexagon_quest_ability_type.value = self.passthrough.get("hexagon_quest_ability_type", 0) - self.options.entrance_rando.value = self.passthrough["entrance_rando"] - self.options.shuffle_ladders.value = self.passthrough["shuffle_ladders"] - self.options.grass_randomizer.value = self.passthrough.get("grass_randomizer", 0) - self.options.breakable_shuffle.value = self.passthrough.get("breakable_shuffle", 0) - self.options.laurels_location.value = self.options.laurels_location.option_anywhere - self.options.combat_logic.value = self.passthrough["combat_logic"] - - self.options.fixed_shop.value = self.options.fixed_shop.option_false - if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].keys() - or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in self.passthrough["Entrance Rando"].values()): - self.options.fixed_shop.value = self.options.fixed_shop.option_true + def replace_connection(old_cxn: PlandoConnection, new_cxn: PlandoConnection, index: int) -> None: + self.options.plando_connections.value.remove(old_cxn) + self.options.plando_connections.value.insert(index, new_cxn) - else: - self.using_ut = False - else: - self.using_ut = False + for index, cxn in enumerate(self.options.plando_connections): + replacement = None + if self.options.decoupled: + # flip any that are pointing to exit to point to entrance so that I don't have to deal with it + if cxn.direction == "exit": + replacement = PlandoConnection(cxn.exit, cxn.entrance, "entrance", cxn.percentage) + # if decoupled is on and you plando'd an entrance to itself but left the direction as both + if cxn.direction == "both" and cxn.entrance == cxn.exit: + replacement = PlandoConnection(cxn.entrance, cxn.exit, "entrance") + # if decoupled is off, just convert these to both + elif cxn.direction != "both": + replacement = PlandoConnection(cxn.entrance, cxn.exit, "both", cxn.percentage) + + if replacement: + replace_connection(cxn, replacement, index) + + if (self.options.entrance_layout == EntranceLayout.option_direction_pairs + and not verify_plando_directions(cxn)): + raise OptionError(f"TUNIC: Player {self.player_name} has invalid plando connections. " + f"They have Direction Pairs enabled and the connection " + f"{cxn.entrance} --> {cxn.exit} does not abide by this option.") + + ut_stuff.setup_options_from_slot_data(self) self.player_location_table = standard_location_name_to_id.copy() @@ -227,10 +230,14 @@ def stage_generate_early(cls, multiworld: MultiWorld) -> None: ice_grappling=tunic.options.ice_grappling.value, ladder_storage=tunic.options.ladder_storage.value, laurels_at_10_fairies=tunic.options.laurels_location == LaurelsLocation.option_10_fairies, - fixed_shop=bool(tunic.options.fixed_shop), - plando=tunic.options.plando_connections) + entrance_layout=tunic.options.entrance_layout.value, + has_decoupled_enabled=bool(tunic.options.decoupled), + plando=tunic.options.plando_connections.value.copy()) continue - + # I feel that syncing this one is worse than erroring out + if bool(tunic.options.decoupled) != cls.seed_groups[group]["has_decoupled_enabled"]: + raise OptionError(f"TUNIC: All players in the seed group {group} must " + f"have Decoupled either enabled or disabled.") # off is more restrictive if not tunic.options.laurels_zips: cls.seed_groups[group]["laurels_zips"] = False @@ -243,34 +250,52 @@ def stage_generate_early(cls, multiworld: MultiWorld) -> None: # laurels at 10 fairies changes logic for secret gathering place placement if tunic.options.laurels_location == 3: cls.seed_groups[group]["laurels_at_10_fairies"] = True - # more restrictive, overrides the option for others in the same group, which is better than failing imo - if tunic.options.fixed_shop: - cls.seed_groups[group]["fixed_shop"] = True - + # fixed shop and direction pairs override standard, but conflict with each other + if tunic.options.entrance_layout: + if cls.seed_groups[group]["entrance_layout"] == EntranceLayout.option_standard: + cls.seed_groups[group]["entrance_layout"] = tunic.options.entrance_layout.value + elif cls.seed_groups[group]["entrance_layout"] != tunic.options.entrance_layout.value: + raise OptionError(f"TUNIC: Conflict between seed group {group}'s Entrance Layout options. " + f"Seed group cannot have both Fixed Shop and Direction Pairs enabled.") if tunic.options.plando_connections: # loop through the connections in the player's yaml - for cxn in tunic.options.plando_connections: + for index, player_cxn in enumerate(tunic.options.plando_connections): new_cxn = True for group_cxn in cls.seed_groups[group]["plando"]: - # if neither entrance nor exit match anything in the group, add to group - if ((cxn.entrance == group_cxn.entrance and cxn.exit == group_cxn.exit) - or (cxn.exit == group_cxn.entrance and cxn.entrance == group_cxn.exit)): + # verify that it abides by direction pairs if enabled + if (cls.seed_groups[group]["entrance_layout"] == EntranceLayout.option_direction_pairs + and not verify_plando_directions(player_cxn)): + player_dir = "<->" if player_cxn.direction == "both" else "-->" + raise Exception(f"TUNIC: Conflict between Entrance Layout option and Plando Connection: " + f"{player_cxn.entrance} {player_dir} {player_cxn.exit}") + # check if this pair is the same as a pair in the group already + if ((player_cxn.entrance == group_cxn.entrance and player_cxn.exit == group_cxn.exit) + or (player_cxn.entrance == group_cxn.exit and player_cxn.exit == group_cxn.entrance + and "both" in [player_cxn.direction, group_cxn.direction])): new_cxn = False + # if the group's was one-way and the player's was two-way, we replace the group's now + if player_cxn.direction == "both" and group_cxn.direction == "entrance": + cls.seed_groups[group]["plando"].remove(group_cxn) + cls.seed_groups[group]["plando"].insert(index, player_cxn) break - - # check if this pair is the same as a pair in the group already is_mismatched = ( - cxn.entrance == group_cxn.entrance and cxn.exit != group_cxn.exit - or cxn.entrance == group_cxn.exit and cxn.exit != group_cxn.entrance - or cxn.exit == group_cxn.entrance and cxn.entrance != group_cxn.exit - or cxn.exit == group_cxn.exit and cxn.entrance != group_cxn.entrance + player_cxn.entrance == group_cxn.entrance and player_cxn.exit != group_cxn.exit + or player_cxn.exit == group_cxn.exit and player_cxn.entrance != group_cxn.entrance ) + if not tunic.options.decoupled: + is_mismatched = is_mismatched or ( + player_cxn.entrance == group_cxn.exit and player_cxn.exit != group_cxn.entrance + or player_cxn.exit == group_cxn.entrance and player_cxn.entrance != group_cxn.exit + ) if is_mismatched: - raise Exception(f"TUNIC: Conflict between seed group {group}'s plando " - f"connection {group_cxn.entrance} <-> {group_cxn.exit} and " - f"{tunic.player_name}'s plando connection {cxn.entrance} <-> {cxn.exit}") + group_dir = "<->" if group_cxn.direction == "both" else "-->" + player_dir = "<->" if player_cxn.direction == "both" else "-->" + raise OptionError(f"TUNIC: Conflict between seed group {group}'s plando " + f"connection {group_cxn.entrance} {group_dir} {group_cxn.exit} and " + f"{tunic.player_name}'s plando connection " + f"{player_cxn.entrance} {player_dir} {player_cxn.exit}") if new_cxn: - cls.seed_groups[group]["plando"].value.append(cxn) + cls.seed_groups[group]["plando"].append(player_cxn) def create_item(self, name: str, classification: ItemClassification = None) -> TunicItem: item_data = item_table[name] @@ -486,10 +511,10 @@ def stage_pre_fill(cls, multiworld: MultiWorld) -> None: multiworld.random.shuffle(non_grass_fill_locations) for filler_item in grass_fill: - multiworld.push_item(grass_fill_locations.pop(), filler_item, collect=False) + grass_fill_locations.pop().place_locked_item(filler_item) for filler_item in non_grass_fill: - multiworld.push_item(non_grass_fill_locations.pop(), filler_item, collect=False) + non_grass_fill_locations.pop().place_locked_item(filler_item) def create_regions(self) -> None: self.tunic_portal_pairs = {} @@ -571,7 +596,7 @@ def extend_hint_information(self, hint_data: Dict[int, Dict[int, str]]) -> None: all_state = self.multiworld.get_all_state(True) all_state.update_reachable_regions(self.player) paths = all_state.path - portal_names = [portal.name for portal in portal_mapping] + portal_names = {portal.name for portal in portal_mapping}.union({f"Shop Portal {i + 1}" for i in range(500)}) for location in self.multiworld.get_locations(self.player): # skipping event locations if not location.address: @@ -630,6 +655,7 @@ def fill_slot_data(self) -> Dict[str, Any]: "lanternless": self.options.lanternless.value, "maskless": self.options.maskless.value, "entrance_rando": int(bool(self.options.entrance_rando.value)), + "decoupled": self.options.decoupled.value if self.options.entrance_rando else 0, "shuffle_ladders": self.options.shuffle_ladders.value, "grass_randomizer": self.options.grass_randomizer.value, "combat_logic": self.options.combat_logic.value, diff --git a/worlds/tunic/combat_logic.py b/worlds/tunic/combat_logic.py index 2e9f19dbc296..dbf1e8640ff2 100644 --- a/worlds/tunic/combat_logic.py +++ b/worlds/tunic/combat_logic.py @@ -22,6 +22,7 @@ class AreaStats(NamedTuple): # the vanilla upgrades/equipment you would have area_data: Dict[str, AreaStats] = { + # The upgrade page is right by the Well entrance. Upper Overworld by the chest in the top right might need something "Overworld": AreaStats(1, 1, 1, 1, 1, 1, 0, ["Stick"]), "East Forest": AreaStats(1, 1, 1, 1, 1, 1, 0, ["Sword"]), "Before Well": AreaStats(1, 1, 1, 1, 1, 1, 3, ["Sword", "Shield"]), diff --git a/worlds/tunic/docs/en_TUNIC.md b/worlds/tunic/docs/en_TUNIC.md index 610c7edf481b..0b85772636c5 100644 --- a/worlds/tunic/docs/en_TUNIC.md +++ b/worlds/tunic/docs/en_TUNIC.md @@ -83,7 +83,7 @@ Notes: - The Entrance Randomizer option must be enabled for it to work. - The `direction` field is not supported. Connections are always coupled. - For a list of entrance names, check `er_data.py` in the TUNIC world folder or generate a game with the Entrance Randomizer option enabled and check the spoiler log. -- There is no limit to the number of Shops you can plando. +- You can plando up to 500 additional shops in Decoupled. You should not do this. See the [Archipelago Plando Guide](../../../tutorial/Archipelago/plando/en) for more information on Plando and Connection Plando. diff --git a/worlds/tunic/er_data.py b/worlds/tunic/er_data.py index 0b3a16167a87..744326aa2060 100644 --- a/worlds/tunic/er_data.py +++ b/worlds/tunic/er_data.py @@ -1,15 +1,28 @@ -from typing import Dict, NamedTuple, List, TYPE_CHECKING, Optional +from typing import Dict, NamedTuple, List, Optional, TYPE_CHECKING from enum import IntEnum if TYPE_CHECKING: from . import TunicWorld +# the direction you go to enter a portal +class Direction(IntEnum): + none = 0 # for when the direction isn't relevant + north = 1 + south = 2 + east = 3 + west = 4 + floor = 5 + ladder_up = 6 + ladder_down = 7 + + class Portal(NamedTuple): name: str # human-readable name region: str # AP region destination: str # vanilla destination scene tag: str # vanilla tag + direction: int # the direction you go to enter a portal def scene(self) -> str: # the actual scene name in Tunic if self.region.startswith("Shop"): @@ -25,497 +38,497 @@ def destination_scene(self) -> str: # the vanilla connection portal_mapping: List[Portal] = [ Portal(name="Stick House Entrance", region="Overworld", - destination="Sword Cave", tag="_"), + destination="Sword Cave", tag="_", direction=Direction.north), Portal(name="Windmill Entrance", region="Overworld", - destination="Windmill", tag="_"), + destination="Windmill", tag="_", direction=Direction.north), Portal(name="Well Ladder Entrance", region="Overworld Well Ladder", - destination="Sewer", tag="_entrance"), + destination="Sewer", tag="_entrance", direction=Direction.ladder_down), Portal(name="Entrance to Well from Well Rail", region="Overworld Well to Furnace Rail", - destination="Sewer", tag="_west_aqueduct"), + destination="Sewer", tag="_west_aqueduct", direction=Direction.north), Portal(name="Old House Door Entrance", region="Overworld Old House Door", - destination="Overworld Interiors", tag="_house"), + destination="Overworld Interiors", tag="_house", direction=Direction.east), Portal(name="Old House Waterfall Entrance", region="Overworld", - destination="Overworld Interiors", tag="_under_checkpoint"), + destination="Overworld Interiors", tag="_under_checkpoint", direction=Direction.east), Portal(name="Entrance to Furnace from Well Rail", region="Overworld Well to Furnace Rail", - destination="Furnace", tag="_gyro_upper_north"), + destination="Furnace", tag="_gyro_upper_north", direction=Direction.south), Portal(name="Entrance to Furnace under Windmill", region="Overworld", - destination="Furnace", tag="_gyro_upper_east"), + destination="Furnace", tag="_gyro_upper_east", direction=Direction.west), Portal(name="Entrance to Furnace near West Garden", region="Overworld to West Garden from Furnace", - destination="Furnace", tag="_gyro_west"), + destination="Furnace", tag="_gyro_west", direction=Direction.east), Portal(name="Entrance to Furnace from Beach", region="Overworld Tunnel Turret", - destination="Furnace", tag="_gyro_lower"), + destination="Furnace", tag="_gyro_lower", direction=Direction.north), Portal(name="Caustic Light Cave Entrance", region="Overworld Swamp Lower Entry", - destination="Overworld Cave", tag="_"), + destination="Overworld Cave", tag="_", direction=Direction.north), Portal(name="Swamp Upper Entrance", region="Overworld Swamp Upper Entry", - destination="Swamp Redux 2", tag="_wall"), + destination="Swamp Redux 2", tag="_wall", direction=Direction.south), Portal(name="Swamp Lower Entrance", region="Overworld Swamp Lower Entry", - destination="Swamp Redux 2", tag="_conduit"), + destination="Swamp Redux 2", tag="_conduit", direction=Direction.south), Portal(name="Ruined Passage Not-Door Entrance", region="After Ruined Passage", - destination="Ruins Passage", tag="_east"), + destination="Ruins Passage", tag="_east", direction=Direction.north), Portal(name="Ruined Passage Door Entrance", region="Overworld Ruined Passage Door", - destination="Ruins Passage", tag="_west"), + destination="Ruins Passage", tag="_west", direction=Direction.east), Portal(name="Atoll Upper Entrance", region="Overworld to Atoll Upper", - destination="Atoll Redux", tag="_upper"), + destination="Atoll Redux", tag="_upper", direction=Direction.south), Portal(name="Atoll Lower Entrance", region="Overworld Beach", - destination="Atoll Redux", tag="_lower"), + destination="Atoll Redux", tag="_lower", direction=Direction.south), Portal(name="Special Shop Entrance", region="Overworld Special Shop Entry", - destination="ShopSpecial", tag="_"), + destination="ShopSpecial", tag="_", direction=Direction.east), Portal(name="Maze Cave Entrance", region="Overworld Beach", - destination="Maze Room", tag="_"), + destination="Maze Room", tag="_", direction=Direction.north), Portal(name="West Garden Entrance near Belltower", region="Overworld to West Garden Upper", - destination="Archipelagos Redux", tag="_upper"), + destination="Archipelagos Redux", tag="_upper", direction=Direction.west), Portal(name="West Garden Entrance from Furnace", region="Overworld to West Garden from Furnace", - destination="Archipelagos Redux", tag="_lower"), + destination="Archipelagos Redux", tag="_lower", direction=Direction.west), Portal(name="West Garden Laurels Entrance", region="Overworld West Garden Laurels Entry", - destination="Archipelagos Redux", tag="_lowest"), + destination="Archipelagos Redux", tag="_lowest", direction=Direction.west), Portal(name="Temple Door Entrance", region="Overworld Temple Door", - destination="Temple", tag="_main"), + destination="Temple", tag="_main", direction=Direction.north), Portal(name="Temple Rafters Entrance", region="Overworld after Temple Rafters", - destination="Temple", tag="_rafters"), + destination="Temple", tag="_rafters", direction=Direction.east), Portal(name="Ruined Shop Entrance", region="Overworld", - destination="Ruined Shop", tag="_"), + destination="Ruined Shop", tag="_", direction=Direction.east), Portal(name="Patrol Cave Entrance", region="Overworld at Patrol Cave", - destination="PatrolCave", tag="_"), + destination="PatrolCave", tag="_", direction=Direction.north), Portal(name="Hourglass Cave Entrance", region="Overworld Beach", - destination="Town Basement", tag="_beach"), + destination="Town Basement", tag="_beach", direction=Direction.north), Portal(name="Changing Room Entrance", region="Overworld", - destination="Changing Room", tag="_"), + destination="Changing Room", tag="_", direction=Direction.south), Portal(name="Cube Cave Entrance", region="Cube Cave Entrance Region", - destination="CubeRoom", tag="_"), + destination="CubeRoom", tag="_", direction=Direction.north), Portal(name="Stairs from Overworld to Mountain", region="Upper Overworld", - destination="Mountain", tag="_"), + destination="Mountain", tag="_", direction=Direction.north), Portal(name="Overworld to Fortress", region="East Overworld", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.east), Portal(name="Fountain HC Door Entrance", region="Overworld Fountain Cross Door", - destination="Town_FiligreeRoom", tag="_"), + destination="Town_FiligreeRoom", tag="_", direction=Direction.north), Portal(name="Southeast HC Door Entrance", region="Overworld Southeast Cross Door", - destination="EastFiligreeCache", tag="_"), + destination="EastFiligreeCache", tag="_", direction=Direction.north), Portal(name="Overworld to Quarry Connector", region="Overworld Quarry Entry", - destination="Darkwoods Tunnel", tag="_"), + destination="Darkwoods Tunnel", tag="_", direction=Direction.north), Portal(name="Dark Tomb Main Entrance", region="Overworld", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.north), Portal(name="Overworld to Forest Belltower", region="East Overworld", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.east), Portal(name="Town to Far Shore", region="Overworld Town Portal", - destination="Transit", tag="_teleporter_town"), + destination="Transit", tag="_teleporter_town", direction=Direction.floor), Portal(name="Spawn to Far Shore", region="Overworld Spawn Portal", - destination="Transit", tag="_teleporter_starting island"), + destination="Transit", tag="_teleporter_starting island", direction=Direction.floor), Portal(name="Secret Gathering Place Entrance", region="Overworld", - destination="Waterfall", tag="_"), - + destination="Waterfall", tag="_", direction=Direction.north), + Portal(name="Secret Gathering Place Exit", region="Secret Gathering Place", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Windmill Exit", region="Windmill", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Windmill Shop", region="Windmill", - destination="Shop", tag="_"), - + destination="Shop", tag="_", direction=Direction.north), + Portal(name="Old House Door Exit", region="Old House Front", - destination="Overworld Redux", tag="_house"), + destination="Overworld Redux", tag="_house", direction=Direction.west), Portal(name="Old House to Glyph Tower", region="Old House Front", - destination="g_elements", tag="_"), + destination="g_elements", tag="_", direction=Direction.south), # portal drops you on north side Portal(name="Old House Waterfall Exit", region="Old House Back", - destination="Overworld Redux", tag="_under_checkpoint"), - + destination="Overworld Redux", tag="_under_checkpoint", direction=Direction.west), + Portal(name="Glyph Tower Exit", region="Relic Tower", - destination="Overworld Interiors", tag="_"), - + destination="Overworld Interiors", tag="_", direction=Direction.north), + Portal(name="Changing Room Exit", region="Changing Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.north), + Portal(name="Fountain HC Room Exit", region="Fountain Cross Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Cube Cave Exit", region="Cube Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Guard Patrol Cave Exit", region="Patrol Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Ruined Shop Exit", region="Ruined Shop", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.west), + Portal(name="Furnace Exit towards Well", region="Furnace Fuse", - destination="Overworld Redux", tag="_gyro_upper_north"), + destination="Overworld Redux", tag="_gyro_upper_north", direction=Direction.north), Portal(name="Furnace Exit to Dark Tomb", region="Furnace Walking Path", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.east), Portal(name="Furnace Exit towards West Garden", region="Furnace Walking Path", - destination="Overworld Redux", tag="_gyro_west"), + destination="Overworld Redux", tag="_gyro_west", direction=Direction.west), Portal(name="Furnace Exit to Beach", region="Furnace Ladder Area", - destination="Overworld Redux", tag="_gyro_lower"), + destination="Overworld Redux", tag="_gyro_lower", direction=Direction.south), Portal(name="Furnace Exit under Windmill", region="Furnace Ladder Area", - destination="Overworld Redux", tag="_gyro_upper_east"), - + destination="Overworld Redux", tag="_gyro_upper_east", direction=Direction.east), + Portal(name="Stick House Exit", region="Stick House", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Ruined Passage Not-Door Exit", region="Ruined Passage", - destination="Overworld Redux", tag="_east"), + destination="Overworld Redux", tag="_east", direction=Direction.south), Portal(name="Ruined Passage Door Exit", region="Ruined Passage", - destination="Overworld Redux", tag="_west"), - + destination="Overworld Redux", tag="_west", direction=Direction.west), + Portal(name="Southeast HC Room Exit", region="Southeast Cross Room", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Caustic Light Cave Exit", region="Caustic Light Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Maze Cave Exit", region="Maze Cave", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Hourglass Cave Exit", region="Hourglass Cave", - destination="Overworld Redux", tag="_beach"), - + destination="Overworld Redux", tag="_beach", direction=Direction.south), + Portal(name="Special Shop Exit", region="Special Shop", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.west), + Portal(name="Temple Rafters Exit", region="Sealed Temple Rafters", - destination="Overworld Redux", tag="_rafters"), + destination="Overworld Redux", tag="_rafters", direction=Direction.west), Portal(name="Temple Door Exit", region="Sealed Temple", - destination="Overworld Redux", tag="_main"), + destination="Overworld Redux", tag="_main", direction=Direction.south), Portal(name="Forest Belltower to Fortress", region="Forest Belltower Main behind bushes", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.north), Portal(name="Forest Belltower to Forest", region="Forest Belltower Lower", - destination="East Forest Redux", tag="_"), + destination="East Forest Redux", tag="_", direction=Direction.south), Portal(name="Forest Belltower to Overworld", region="Forest Belltower Main", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.west), Portal(name="Forest Belltower to Guard Captain Room", region="Forest Belltower Upper", - destination="Forest Boss Room", tag="_"), + destination="Forest Boss Room", tag="_", direction=Direction.south), Portal(name="Forest to Belltower", region="East Forest", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.north), Portal(name="Forest Guard House 1 Lower Entrance", region="East Forest", - destination="East Forest Redux Laddercave", tag="_lower"), + destination="East Forest Redux Laddercave", tag="_lower", direction=Direction.north), Portal(name="Forest Guard House 1 Gate Entrance", region="East Forest", - destination="East Forest Redux Laddercave", tag="_gate"), + destination="East Forest Redux Laddercave", tag="_gate", direction=Direction.north), Portal(name="Forest Dance Fox Outside Doorway", region="East Forest Dance Fox Spot", - destination="East Forest Redux Laddercave", tag="_upper"), + destination="East Forest Redux Laddercave", tag="_upper", direction=Direction.east), Portal(name="Forest to Far Shore", region="East Forest Portal", - destination="Transit", tag="_teleporter_forest teleporter"), + destination="Transit", tag="_teleporter_forest teleporter", direction=Direction.floor), Portal(name="Forest Guard House 2 Lower Entrance", region="Lower Forest", - destination="East Forest Redux Interior", tag="_lower"), + destination="East Forest Redux Interior", tag="_lower", direction=Direction.north), Portal(name="Forest Guard House 2 Upper Entrance", region="East Forest", - destination="East Forest Redux Interior", tag="_upper"), + destination="East Forest Redux Interior", tag="_upper", direction=Direction.east), Portal(name="Forest Grave Path Lower Entrance", region="East Forest", - destination="Sword Access", tag="_lower"), + destination="Sword Access", tag="_lower", direction=Direction.east), Portal(name="Forest Grave Path Upper Entrance", region="East Forest", - destination="Sword Access", tag="_upper"), + destination="Sword Access", tag="_upper", direction=Direction.east), Portal(name="Forest Grave Path Upper Exit", region="Forest Grave Path Upper", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Forest Grave Path Lower Exit", region="Forest Grave Path Main", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.west), Portal(name="East Forest Hero's Grave", region="Forest Hero's Grave", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Guard House 1 Dance Fox Exit", region="Guard House 1 West", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Guard House 1 Lower Exit", region="Guard House 1 West", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.south), Portal(name="Guard House 1 Upper Forest Exit", region="Guard House 1 East", - destination="East Forest Redux", tag="_gate"), + destination="East Forest Redux", tag="_gate", direction=Direction.south), Portal(name="Guard House 1 to Guard Captain Room", region="Guard House 1 East", - destination="Forest Boss Room", tag="_"), + destination="Forest Boss Room", tag="_", direction=Direction.north), Portal(name="Guard House 2 Lower Exit", region="Guard House 2 Lower", - destination="East Forest Redux", tag="_lower"), + destination="East Forest Redux", tag="_lower", direction=Direction.south), Portal(name="Guard House 2 Upper Exit", region="Guard House 2 Upper before bushes", - destination="East Forest Redux", tag="_upper"), + destination="East Forest Redux", tag="_upper", direction=Direction.west), Portal(name="Guard Captain Room Non-Gate Exit", region="Forest Boss Room", - destination="East Forest Redux Laddercave", tag="_"), + destination="East Forest Redux Laddercave", tag="_", direction=Direction.south), Portal(name="Guard Captain Room Gate Exit", region="Forest Boss Room", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.north), Portal(name="Well Ladder Exit", region="Beneath the Well Ladder Exit", - destination="Overworld Redux", tag="_entrance"), + destination="Overworld Redux", tag="_entrance", direction=Direction.ladder_up), Portal(name="Well to Well Boss", region="Beneath the Well Back", - destination="Sewer_Boss", tag="_"), + destination="Sewer_Boss", tag="_", direction=Direction.east), Portal(name="Well Exit towards Furnace", region="Beneath the Well Back", - destination="Overworld Redux", tag="_west_aqueduct"), + destination="Overworld Redux", tag="_west_aqueduct", direction=Direction.south), Portal(name="Well Boss to Well", region="Well Boss", - destination="Sewer", tag="_"), + destination="Sewer", tag="_", direction=Direction.west), Portal(name="Checkpoint to Dark Tomb", region="Dark Tomb Checkpoint", - destination="Crypt Redux", tag="_"), + destination="Crypt Redux", tag="_", direction=Direction.ladder_up), Portal(name="Dark Tomb to Overworld", region="Dark Tomb Entry Point", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Dark Tomb to Furnace", region="Dark Tomb Dark Exit", - destination="Furnace", tag="_"), + destination="Furnace", tag="_", direction=Direction.west), Portal(name="Dark Tomb to Checkpoint", region="Dark Tomb Entry Point", - destination="Sewer_Boss", tag="_"), - + destination="Sewer_Boss", tag="_", direction=Direction.ladder_down), + Portal(name="West Garden Exit near Hero's Grave", region="West Garden before Terry", - destination="Overworld Redux", tag="_lower"), + destination="Overworld Redux", tag="_lower", direction=Direction.east), Portal(name="West Garden to Magic Dagger House", region="West Garden at Dagger House", - destination="archipelagos_house", tag="_"), + destination="archipelagos_house", tag="_", direction=Direction.east), Portal(name="West Garden Exit after Boss", region="West Garden after Boss", - destination="Overworld Redux", tag="_upper"), + destination="Overworld Redux", tag="_upper", direction=Direction.east), Portal(name="West Garden Shop", region="West Garden before Terry", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.east), Portal(name="West Garden Laurels Exit", region="West Garden Laurels Exit Region", - destination="Overworld Redux", tag="_lowest"), + destination="Overworld Redux", tag="_lowest", direction=Direction.east), Portal(name="West Garden Hero's Grave", region="West Garden Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="West Garden to Far Shore", region="West Garden Portal", - destination="Transit", tag="_teleporter_archipelagos_teleporter"), + destination="Transit", tag="_teleporter_archipelagos_teleporter", direction=Direction.floor), Portal(name="Magic Dagger House Exit", region="Magic Dagger House", - destination="Archipelagos Redux", tag="_"), + destination="Archipelagos Redux", tag="_", direction=Direction.west), Portal(name="Fortress Courtyard to Fortress Grave Path Lower", region="Fortress Courtyard", - destination="Fortress Reliquary", tag="_Lower"), + destination="Fortress Reliquary", tag="_Lower", direction=Direction.east), Portal(name="Fortress Courtyard to Fortress Grave Path Upper", region="Fortress Courtyard Upper", - destination="Fortress Reliquary", tag="_Upper"), + destination="Fortress Reliquary", tag="_Upper", direction=Direction.east), Portal(name="Fortress Courtyard to Fortress Interior", region="Fortress Courtyard", - destination="Fortress Main", tag="_Big Door"), + destination="Fortress Main", tag="_Big Door", direction=Direction.north), Portal(name="Fortress Courtyard to East Fortress", region="Fortress Courtyard Upper", - destination="Fortress East", tag="_"), + destination="Fortress East", tag="_", direction=Direction.north), Portal(name="Fortress Courtyard to Beneath the Vault", region="Beneath the Vault Entry", - destination="Fortress Basement", tag="_"), + destination="Fortress Basement", tag="_", direction=Direction.ladder_down), Portal(name="Fortress Courtyard to Forest Belltower", region="Fortress Exterior from East Forest", - destination="Forest Belltower", tag="_"), + destination="Forest Belltower", tag="_", direction=Direction.south), Portal(name="Fortress Courtyard to Overworld", region="Fortress Exterior from Overworld", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.west), Portal(name="Fortress Courtyard Shop", region="Fortress Exterior near cave", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Beneath the Vault to Fortress Interior", region="Beneath the Vault Back", - destination="Fortress Main", tag="_"), + destination="Fortress Main", tag="_", direction=Direction.east), Portal(name="Beneath the Vault to Fortress Courtyard", region="Beneath the Vault Ladder Exit", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.ladder_up), Portal(name="Fortress Interior Main Exit", region="Eastern Vault Fortress", - destination="Fortress Courtyard", tag="_Big Door"), + destination="Fortress Courtyard", tag="_Big Door", direction=Direction.south), Portal(name="Fortress Interior to Beneath the Earth", region="Eastern Vault Fortress", - destination="Fortress Basement", tag="_"), + destination="Fortress Basement", tag="_", direction=Direction.west), Portal(name="Fortress Interior to Siege Engine Arena", region="Eastern Vault Fortress Gold Door", - destination="Fortress Arena", tag="_"), + destination="Fortress Arena", tag="_", direction=Direction.north), Portal(name="Fortress Interior Shop", region="Eastern Vault Fortress", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Fortress Interior to East Fortress Upper", region="Eastern Vault Fortress", - destination="Fortress East", tag="_upper"), + destination="Fortress East", tag="_upper", direction=Direction.east), Portal(name="Fortress Interior to East Fortress Lower", region="Eastern Vault Fortress", - destination="Fortress East", tag="_lower"), + destination="Fortress East", tag="_lower", direction=Direction.east), Portal(name="East Fortress to Interior Lower", region="Fortress East Shortcut Lower", - destination="Fortress Main", tag="_lower"), + destination="Fortress Main", tag="_lower", direction=Direction.west), Portal(name="East Fortress to Courtyard", region="Fortress East Shortcut Upper", - destination="Fortress Courtyard", tag="_"), + destination="Fortress Courtyard", tag="_", direction=Direction.south), Portal(name="East Fortress to Interior Upper", region="Fortress East Shortcut Upper", - destination="Fortress Main", tag="_upper"), + destination="Fortress Main", tag="_upper", direction=Direction.west), Portal(name="Fortress Grave Path Lower Exit", region="Fortress Grave Path Entry", - destination="Fortress Courtyard", tag="_Lower"), + destination="Fortress Courtyard", tag="_Lower", direction=Direction.west), Portal(name="Fortress Hero's Grave", region="Fortress Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Fortress Grave Path Upper Exit", region="Fortress Grave Path Upper", - destination="Fortress Courtyard", tag="_Upper"), + destination="Fortress Courtyard", tag="_Upper", direction=Direction.west), Portal(name="Fortress Grave Path Dusty Entrance", region="Fortress Grave Path Dusty Entrance Region", - destination="Dusty", tag="_"), + destination="Dusty", tag="_", direction=Direction.north), Portal(name="Dusty Exit", region="Fortress Leaf Piles", - destination="Fortress Reliquary", tag="_"), + destination="Fortress Reliquary", tag="_", direction=Direction.south), Portal(name="Siege Engine Arena to Fortress", region="Fortress Arena", - destination="Fortress Main", tag="_"), + destination="Fortress Main", tag="_", direction=Direction.south), Portal(name="Fortress to Far Shore", region="Fortress Arena Portal", - destination="Transit", tag="_teleporter_spidertank"), + destination="Transit", tag="_teleporter_spidertank", direction=Direction.floor), Portal(name="Atoll Upper Exit", region="Ruined Atoll", - destination="Overworld Redux", tag="_upper"), + destination="Overworld Redux", tag="_upper", direction=Direction.north), Portal(name="Atoll Lower Exit", region="Ruined Atoll Lower Entry Area", - destination="Overworld Redux", tag="_lower"), + destination="Overworld Redux", tag="_lower", direction=Direction.north), Portal(name="Atoll Shop", region="Ruined Atoll", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Atoll to Far Shore", region="Ruined Atoll Portal", - destination="Transit", tag="_teleporter_atoll"), + destination="Transit", tag="_teleporter_atoll", direction=Direction.floor), Portal(name="Atoll Statue Teleporter", region="Ruined Atoll Statue", - destination="Library Exterior", tag="_"), + destination="Library Exterior", tag="_", direction=Direction.floor), Portal(name="Frog Stairs Eye Entrance", region="Ruined Atoll Frog Eye", - destination="Frog Stairs", tag="_eye"), + destination="Frog Stairs", tag="_eye", direction=Direction.south), # camera rotates, it's fine Portal(name="Frog Stairs Mouth Entrance", region="Ruined Atoll Frog Mouth", - destination="Frog Stairs", tag="_mouth"), + destination="Frog Stairs", tag="_mouth", direction=Direction.east), Portal(name="Frog Stairs Eye Exit", region="Frog Stairs Eye Exit", - destination="Atoll Redux", tag="_eye"), + destination="Atoll Redux", tag="_eye", direction=Direction.north), Portal(name="Frog Stairs Mouth Exit", region="Frog Stairs Upper", - destination="Atoll Redux", tag="_mouth"), + destination="Atoll Redux", tag="_mouth", direction=Direction.west), Portal(name="Frog Stairs to Frog's Domain's Entrance", region="Frog Stairs to Frog's Domain", - destination="frog cave main", tag="_Entrance"), + destination="frog cave main", tag="_Entrance", direction=Direction.ladder_down), Portal(name="Frog Stairs to Frog's Domain's Exit", region="Frog Stairs Lower", - destination="frog cave main", tag="_Exit"), + destination="frog cave main", tag="_Exit", direction=Direction.east), Portal(name="Frog's Domain Ladder Exit", region="Frog's Domain Entry", - destination="Frog Stairs", tag="_Entrance"), + destination="Frog Stairs", tag="_Entrance", direction=Direction.ladder_up), Portal(name="Frog's Domain Orb Exit", region="Frog's Domain Back", - destination="Frog Stairs", tag="_Exit"), + destination="Frog Stairs", tag="_Exit", direction=Direction.west), Portal(name="Library Exterior Tree", region="Library Exterior Tree Region", - destination="Atoll Redux", tag="_"), + destination="Atoll Redux", tag="_", direction=Direction.floor), Portal(name="Library Exterior Ladder", region="Library Exterior Ladder Region", - destination="Library Hall", tag="_"), + destination="Library Hall", tag="_", direction=Direction.west), # camera rotates Portal(name="Library Hall Bookshelf Exit", region="Library Hall Bookshelf", - destination="Library Exterior", tag="_"), + destination="Library Exterior", tag="_", direction=Direction.east), Portal(name="Library Hero's Grave", region="Library Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Library Hall to Rotunda", region="Library Hall to Rotunda", - destination="Library Rotunda", tag="_"), + destination="Library Rotunda", tag="_", direction=Direction.ladder_up), Portal(name="Library Rotunda Lower Exit", region="Library Rotunda to Hall", - destination="Library Hall", tag="_"), + destination="Library Hall", tag="_", direction=Direction.ladder_down), Portal(name="Library Rotunda Upper Exit", region="Library Rotunda to Lab", - destination="Library Lab", tag="_"), + destination="Library Lab", tag="_", direction=Direction.ladder_up), Portal(name="Library Lab to Rotunda", region="Library Lab Lower", - destination="Library Rotunda", tag="_"), + destination="Library Rotunda", tag="_", direction=Direction.ladder_down), Portal(name="Library to Far Shore", region="Library Portal", - destination="Transit", tag="_teleporter_library teleporter"), + destination="Transit", tag="_teleporter_library teleporter", direction=Direction.floor), Portal(name="Library Lab to Librarian Arena", region="Library Lab to Librarian", - destination="Library Arena", tag="_"), + destination="Library Arena", tag="_", direction=Direction.ladder_up), Portal(name="Librarian Arena Exit", region="Library Arena", - destination="Library Lab", tag="_"), + destination="Library Lab", tag="_", direction=Direction.ladder_down), Portal(name="Stairs to Top of the Mountain", region="Lower Mountain Stairs", - destination="Mountaintop", tag="_"), + destination="Mountaintop", tag="_", direction=Direction.north), Portal(name="Mountain to Quarry", region="Lower Mountain", - destination="Quarry Redux", tag="_"), + destination="Quarry Redux", tag="_", direction=Direction.south), # connecting is north Portal(name="Mountain to Overworld", region="Lower Mountain", - destination="Overworld Redux", tag="_"), - + destination="Overworld Redux", tag="_", direction=Direction.south), + Portal(name="Top of the Mountain Exit", region="Top of the Mountain", - destination="Mountain", tag="_"), - + destination="Mountain", tag="_", direction=Direction.south), + Portal(name="Quarry Connector to Overworld", region="Quarry Connector", - destination="Overworld Redux", tag="_"), + destination="Overworld Redux", tag="_", direction=Direction.south), Portal(name="Quarry Connector to Quarry", region="Quarry Connector", - destination="Quarry Redux", tag="_"), - + destination="Quarry Redux", tag="_", direction=Direction.north), # rotates, it's fine + Portal(name="Quarry to Overworld Exit", region="Quarry Entry", - destination="Darkwoods Tunnel", tag="_"), + destination="Darkwoods Tunnel", tag="_", direction=Direction.south), # rotates, it's fine Portal(name="Quarry Shop", region="Quarry Entry", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Quarry to Monastery Front", region="Quarry Monastery Entry", - destination="Monastery", tag="_front"), + destination="Monastery", tag="_front", direction=Direction.north), Portal(name="Quarry to Monastery Back", region="Monastery Rope", - destination="Monastery", tag="_back"), + destination="Monastery", tag="_back", direction=Direction.east), Portal(name="Quarry to Mountain", region="Quarry Back", - destination="Mountain", tag="_"), + destination="Mountain", tag="_", direction=Direction.north), Portal(name="Quarry to Ziggurat", region="Lower Quarry Zig Door", - destination="ziggurat2020_0", tag="_"), + destination="ziggurat2020_0", tag="_", direction=Direction.north), Portal(name="Quarry to Far Shore", region="Quarry Portal", - destination="Transit", tag="_teleporter_quarry teleporter"), - + destination="Transit", tag="_teleporter_quarry teleporter", direction=Direction.floor), + Portal(name="Monastery Rear Exit", region="Monastery Back", - destination="Quarry Redux", tag="_back"), + destination="Quarry Redux", tag="_back", direction=Direction.west), Portal(name="Monastery Front Exit", region="Monastery Front", - destination="Quarry Redux", tag="_front"), + destination="Quarry Redux", tag="_front", direction=Direction.south), Portal(name="Monastery Hero's Grave", region="Monastery Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), - + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Ziggurat Entry Hallway to Ziggurat Upper", region="Rooted Ziggurat Entry", - destination="ziggurat2020_1", tag="_"), + destination="ziggurat2020_1", tag="_", direction=Direction.north), Portal(name="Ziggurat Entry Hallway to Quarry", region="Rooted Ziggurat Entry", - destination="Quarry Redux", tag="_"), - + destination="Quarry Redux", tag="_", direction=Direction.south), + Portal(name="Ziggurat Upper to Ziggurat Entry Hallway", region="Rooted Ziggurat Upper Entry", - destination="ziggurat2020_0", tag="_"), + destination="ziggurat2020_0", tag="_", direction=Direction.south), Portal(name="Ziggurat Upper to Ziggurat Tower", region="Rooted Ziggurat Upper Back", - destination="ziggurat2020_2", tag="_"), - + destination="ziggurat2020_2", tag="_", direction=Direction.north), # connecting is south + Portal(name="Ziggurat Tower to Ziggurat Upper", region="Rooted Ziggurat Middle Top", - destination="ziggurat2020_1", tag="_"), + destination="ziggurat2020_1", tag="_", direction=Direction.south), Portal(name="Ziggurat Tower to Ziggurat Lower", region="Rooted Ziggurat Middle Bottom", - destination="ziggurat2020_3", tag="_"), - + destination="ziggurat2020_3", tag="_", direction=Direction.south), + Portal(name="Ziggurat Lower to Ziggurat Tower", region="Rooted Ziggurat Lower Entry", - destination="ziggurat2020_2", tag="_"), + destination="ziggurat2020_2", tag="_", direction=Direction.north), Portal(name="Ziggurat Portal Room Entrance", region="Rooted Ziggurat Portal Room Entrance", - destination="ziggurat2020_FTRoom", tag="_"), + destination="ziggurat2020_FTRoom", tag="_", direction=Direction.north), # only if fixed shop is on, removed otherwise - Portal(name="Ziggurat Lower Falling Entrance", region="Zig Skip Exit", - destination="ziggurat2020_1", tag="_zig2_skip"), - + Portal(name="Ziggurat Lower Falling Entrance", region="Zig Skip Exit", # not a real region + destination="ziggurat2020_1", tag="_zig2_skip", direction=Direction.none), + Portal(name="Ziggurat Portal Room Exit", region="Rooted Ziggurat Portal Room Exit", - destination="ziggurat2020_3", tag="_"), + destination="ziggurat2020_3", tag="_", direction=Direction.south), Portal(name="Ziggurat to Far Shore", region="Rooted Ziggurat Portal", - destination="Transit", tag="_teleporter_ziggurat teleporter"), - + destination="Transit", tag="_teleporter_ziggurat teleporter", direction=Direction.floor), + Portal(name="Swamp Lower Exit", region="Swamp Front", - destination="Overworld Redux", tag="_conduit"), + destination="Overworld Redux", tag="_conduit", direction=Direction.north), Portal(name="Swamp to Cathedral Main Entrance", region="Swamp to Cathedral Main Entrance Region", - destination="Cathedral Redux", tag="_main"), + destination="Cathedral Redux", tag="_main", direction=Direction.north), Portal(name="Swamp to Cathedral Secret Legend Room Entrance", region="Swamp to Cathedral Treasure Room", - destination="Cathedral Redux", tag="_secret"), + destination="Cathedral Redux", tag="_secret", direction=Direction.south), # feels a little weird Portal(name="Swamp to Gauntlet", region="Back of Swamp", - destination="Cathedral Arena", tag="_"), + destination="Cathedral Arena", tag="_", direction=Direction.north), Portal(name="Swamp Shop", region="Swamp Front", - destination="Shop", tag="_"), + destination="Shop", tag="_", direction=Direction.north), Portal(name="Swamp Upper Exit", region="Back of Swamp Laurels Area", - destination="Overworld Redux", tag="_wall"), + destination="Overworld Redux", tag="_wall", direction=Direction.north), Portal(name="Swamp Hero's Grave", region="Swamp Hero's Grave Region", - destination="RelicVoid", tag="_teleporter_relic plinth"), - + destination="RelicVoid", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Cathedral Main Exit", region="Cathedral Entry", - destination="Swamp Redux 2", tag="_main"), + destination="Swamp Redux 2", tag="_main", direction=Direction.south), Portal(name="Cathedral Elevator", region="Cathedral to Gauntlet", - destination="Cathedral Arena", tag="_"), + destination="Cathedral Arena", tag="_", direction=Direction.ladder_down), # elevators are ladders, right? Portal(name="Cathedral Secret Legend Room Exit", region="Cathedral Secret Legend Room", - destination="Swamp Redux 2", tag="_secret"), - + destination="Swamp Redux 2", tag="_secret", direction=Direction.north), + Portal(name="Gauntlet to Swamp", region="Cathedral Gauntlet Exit", - destination="Swamp Redux 2", tag="_"), + destination="Swamp Redux 2", tag="_", direction=Direction.south), Portal(name="Gauntlet Elevator", region="Cathedral Gauntlet Checkpoint", - destination="Cathedral Redux", tag="_"), + destination="Cathedral Redux", tag="_", direction=Direction.ladder_up), Portal(name="Gauntlet Shop", region="Cathedral Gauntlet Checkpoint", - destination="Shop", tag="_"), - + destination="Shop", tag="_", direction=Direction.east), + Portal(name="Hero's Grave to Fortress", region="Hero Relic - Fortress", - destination="Fortress Reliquary", tag="_teleporter_relic plinth"), + destination="Fortress Reliquary", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Monastery", region="Hero Relic - Quarry", - destination="Monastery", tag="_teleporter_relic plinth"), + destination="Monastery", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to West Garden", region="Hero Relic - West Garden", - destination="Archipelagos Redux", tag="_teleporter_relic plinth"), + destination="Archipelagos Redux", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to East Forest", region="Hero Relic - East Forest", - destination="Sword Access", tag="_teleporter_relic plinth"), + destination="Sword Access", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Library", region="Hero Relic - Library", - destination="Library Hall", tag="_teleporter_relic plinth"), + destination="Library Hall", tag="_teleporter_relic plinth", direction=Direction.floor), Portal(name="Hero's Grave to Swamp", region="Hero Relic - Swamp", - destination="Swamp Redux 2", tag="_teleporter_relic plinth"), - + destination="Swamp Redux 2", tag="_teleporter_relic plinth", direction=Direction.floor), + Portal(name="Far Shore to West Garden", region="Far Shore to West Garden Region", - destination="Archipelagos Redux", tag="_teleporter_archipelagos_teleporter"), + destination="Archipelagos Redux", tag="_teleporter_archipelagos_teleporter", direction=Direction.floor), Portal(name="Far Shore to Library", region="Far Shore to Library Region", - destination="Library Lab", tag="_teleporter_library teleporter"), + destination="Library Lab", tag="_teleporter_library teleporter", direction=Direction.floor), Portal(name="Far Shore to Quarry", region="Far Shore to Quarry Region", - destination="Quarry Redux", tag="_teleporter_quarry teleporter"), + destination="Quarry Redux", tag="_teleporter_quarry teleporter", direction=Direction.floor), Portal(name="Far Shore to East Forest", region="Far Shore to East Forest Region", - destination="East Forest Redux", tag="_teleporter_forest teleporter"), + destination="East Forest Redux", tag="_teleporter_forest teleporter", direction=Direction.floor), Portal(name="Far Shore to Fortress", region="Far Shore to Fortress Region", - destination="Fortress Arena", tag="_teleporter_spidertank"), + destination="Fortress Arena", tag="_teleporter_spidertank", direction=Direction.floor), Portal(name="Far Shore to Atoll", region="Far Shore", - destination="Atoll Redux", tag="_teleporter_atoll"), + destination="Atoll Redux", tag="_teleporter_atoll", direction=Direction.floor), Portal(name="Far Shore to Ziggurat", region="Far Shore", - destination="ziggurat2020_FTRoom", tag="_teleporter_ziggurat teleporter"), + destination="ziggurat2020_FTRoom", tag="_teleporter_ziggurat teleporter", direction=Direction.floor), Portal(name="Far Shore to Heir", region="Far Shore", - destination="Spirit Arena", tag="_teleporter_spirit arena"), + destination="Spirit Arena", tag="_teleporter_spirit arena", direction=Direction.floor), Portal(name="Far Shore to Town", region="Far Shore", - destination="Overworld Redux", tag="_teleporter_town"), + destination="Overworld Redux", tag="_teleporter_town", direction=Direction.floor), Portal(name="Far Shore to Spawn", region="Far Shore to Spawn Region", - destination="Overworld Redux", tag="_teleporter_starting island"), - + destination="Overworld Redux", tag="_teleporter_starting island", direction=Direction.floor), + Portal(name="Heir Arena Exit", region="Spirit Arena", - destination="Transit", tag="_teleporter_spirit arena"), - + destination="Transit", tag="_teleporter_spirit arena", direction=Direction.floor), + Portal(name="Purgatory Bottom Exit", region="Purgatory", - destination="Purgatory", tag="_bottom"), + destination="Purgatory", tag="_bottom", direction=Direction.south), Portal(name="Purgatory Top Exit", region="Purgatory", - destination="Purgatory", tag="_top"), + destination="Purgatory", tag="_top", direction=Direction.north), ] @@ -523,6 +536,7 @@ class RegionInfo(NamedTuple): game_scene: str # the name of the scene in the actual game dead_end: int = 0 # if a region has only one exit outlet_region: Optional[str] = None + is_fake_region: bool = False # gets the outlet region name if it exists, the region if it doesn't @@ -540,9 +554,9 @@ class DeadEnd(IntEnum): # key is the AP region name. "Fake" in region info just means the mod won't receive that info at all tunic_er_regions: Dict[str, RegionInfo] = { - "Menu": RegionInfo("Fake", dead_end=DeadEnd.all_cats), + "Menu": RegionInfo("Fake", dead_end=DeadEnd.all_cats, is_fake_region=True), "Overworld": RegionInfo("Overworld Redux"), # main overworld, the central area - "Overworld Holy Cross": RegionInfo("Fake", dead_end=DeadEnd.all_cats), # main overworld holy cross checks + "Overworld Holy Cross": RegionInfo("Fake", dead_end=DeadEnd.all_cats, is_fake_region=True), # main overworld holy cross checks "Overworld Belltower": RegionInfo("Overworld Redux"), # the area with the belltower and chest "Overworld Belltower at Bell": RegionInfo("Overworld Redux"), # being able to ring the belltower, basically "Overworld Swamp Upper Entry": RegionInfo("Overworld Redux"), # upper swamp entry spot @@ -722,7 +736,7 @@ class DeadEnd(IntEnum): "Rooted Ziggurat Lower Front": RegionInfo("ziggurat2020_3"), # the front for combat logic "Rooted Ziggurat Lower Mid Checkpoint": RegionInfo("ziggurat2020_3"), # the mid-checkpoint before double admin "Rooted Ziggurat Lower Back": RegionInfo("ziggurat2020_3"), # the boss side - "Zig Skip Exit": RegionInfo("ziggurat2020_3", dead_end=DeadEnd.special, outlet_region="Rooted Ziggurat Lower Entry"), # for use with fixed shop on + "Zig Skip Exit": RegionInfo("ziggurat2020_3", dead_end=DeadEnd.special, outlet_region="Rooted Ziggurat Lower Entry", is_fake_region=True), # for use with fixed shop on "Rooted Ziggurat Portal Room Entrance": RegionInfo("ziggurat2020_3", outlet_region="Rooted Ziggurat Lower Back"), # the door itself on the zig 3 side "Rooted Ziggurat Portal": RegionInfo("ziggurat2020_FTRoom", outlet_region="Rooted Ziggurat Portal Room"), "Rooted Ziggurat Portal Room": RegionInfo("ziggurat2020_FTRoom"), @@ -758,7 +772,7 @@ class DeadEnd(IntEnum): "Purgatory": RegionInfo("Purgatory"), "Shop": RegionInfo("Shop", dead_end=DeadEnd.all_cats), "Spirit Arena": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats), - "Spirit Arena Victory": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats), + "Spirit Arena Victory": RegionInfo("Spirit Arena", dead_end=DeadEnd.all_cats, is_fake_region=True), } @@ -813,7 +827,7 @@ class DeadEnd(IntEnum): "Overworld Southeast Cross Door": [], "Overworld Fountain Cross Door": - [], + [], "Overworld Town Portal": [], "Overworld Spawn Portal": @@ -1301,7 +1315,6 @@ class DeadEnd(IntEnum): [], }, - # cannot get from frogs back to front "Library Exterior Ladder Region": { "Library Exterior by Tree": [], @@ -1634,10 +1647,6 @@ class DeadEnd(IntEnum): "Rooted Ziggurat Portal Room Entrance": [], }, - "Zig Skip Exit": { - "Rooted Ziggurat Lower Front": - [], - }, "Rooted Ziggurat Portal Room Entrance": { "Rooted Ziggurat Lower Back": [], diff --git a/worlds/tunic/er_rules.py b/worlds/tunic/er_rules.py index 84ebb4830474..edd6021cba6c 100644 --- a/worlds/tunic/er_rules.py +++ b/worlds/tunic/er_rules.py @@ -56,18 +56,18 @@ def get_portal_info(portal_sd: str) -> Tuple[str, str]: for portal1, portal2 in portal_pairs.items(): if portal1.scene_destination() == portal_sd: return portal1.name, get_portal_outlet_region(portal2, world) - if portal2.scene_destination() == portal_sd: + if portal2.scene_destination() == portal_sd and not (options.decoupled and options.entrance_rando): return portal2.name, get_portal_outlet_region(portal1, world) - raise Exception("No matches found in get_portal_info") + raise Exception(f"No matches found in get_portal_info for {portal_sd}") # input scene destination tag, returns paired portal's name and region def get_paired_portal(portal_sd: str) -> Tuple[str, str]: for portal1, portal2 in portal_pairs.items(): if portal1.scene_destination() == portal_sd: return portal2.name, portal2.region - if portal2.scene_destination() == portal_sd: + if portal2.scene_destination() == portal_sd and not (options.decoupled and options.entrance_rando): return portal1.name, portal1.region - raise Exception("no matches found in get_paired_portal") + raise Exception(f"No matches found in get_paired_portal for {portal_sd}") regions["Menu"].connect( connecting_region=regions["Overworld"]) @@ -381,9 +381,11 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: regions["Overworld"].connect( connecting_region=regions["Overworld Tunnel Turret"], rule=lambda state: state.has(laurels, player)) - regions["Overworld Tunnel Turret"].connect( - connecting_region=regions["Overworld"], - rule=lambda state: state.has_any({grapple, laurels}, player)) + + # always have access to Overworld, so connecting back isn't needed + # regions["Overworld Tunnel Turret"].connect( + # connecting_region=regions["Overworld"], + # rule=lambda state: state.has_any({grapple, laurels}, player)) cube_entrance = regions["Overworld"].connect( connecting_region=regions["Cube Cave Entrance Region"], @@ -1053,11 +1055,6 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: regions["Rooted Ziggurat Portal Room Entrance"].connect( connecting_region=regions["Rooted Ziggurat Lower Back"]) - # zig skip region only gets made if entrance rando and fewer shops are on - if options.entrance_rando and options.fixed_shop: - regions["Zig Skip Exit"].connect( - connecting_region=regions["Rooted Ziggurat Lower Front"]) - regions["Rooted Ziggurat Portal"].connect( connecting_region=regions["Rooted Ziggurat Portal Room"]) regions["Rooted Ziggurat Portal Room"].connect( @@ -1226,14 +1223,6 @@ def get_paired_portal(portal_sd: str) -> Tuple[str, str]: and has_sword(state, player)))) if options.ladder_storage: - def get_portal_info(portal_sd: str) -> Tuple[str, str]: - for portal1, portal2 in portal_pairs.items(): - if portal1.scene_destination() == portal_sd: - return portal1.name, get_portal_outlet_region(portal2, world) - if portal2.scene_destination() == portal_sd: - return portal2.name, get_portal_outlet_region(portal1, world) - raise Exception("no matches found in get_paired_region") - # connect ls elevation regions to their destinations def ls_connect(origin_name: str, portal_sdt: str) -> None: p_name, paired_region_name = get_portal_info(portal_sdt) diff --git a/worlds/tunic/er_scripts.py b/worlds/tunic/er_scripts.py index 597c65b92070..ae1b5fcb454d 100644 --- a/worlds/tunic/er_scripts.py +++ b/worlds/tunic/er_scripts.py @@ -1,11 +1,12 @@ from typing import Dict, List, Set, Tuple, TYPE_CHECKING from BaseClasses import Region, ItemClassification, Item, Location from .locations import all_locations -from .er_data import Portal, portal_mapping, traversal_requirements, DeadEnd, RegionInfo +from .er_data import (Portal, portal_mapping, traversal_requirements, DeadEnd, Direction, RegionInfo, + get_portal_outlet_region) from .er_rules import set_er_region_rules from .breakables import create_breakable_exclusive_regions, set_breakable_location_rules from Options import PlandoConnection -from .options import EntranceRando +from .options import EntranceRando, EntranceLayout from random import Random from copy import deepcopy @@ -23,17 +24,18 @@ class TunicERLocation(Location): def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: regions: Dict[str, Region] = {} + world.used_shop_numbers = set() + for region_name, region_data in world.er_regions.items(): if world.options.entrance_rando and region_name == "Zig Skip Exit": # need to check if there's a seed group for this first if world.options.entrance_rando.value not in EntranceRando.options.values(): - if not world.seed_groups[world.options.entrance_rando.value]["fixed_shop"]: + if world.seed_groups[world.options.entrance_rando.value]["entrance_layout"] != EntranceLayout.option_fixed_shop: continue - elif not world.options.fixed_shop: + elif world.options.entrance_layout != EntranceLayout.option_fixed_shop: continue if not world.options.entrance_rando and region_name in ("Zig Skip Exit", "Purgatory"): continue - region = Region(region_name, world.player, world.multiworld) regions[region_name] = region world.multiworld.regions.append(region) @@ -46,13 +48,18 @@ def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: portal_pairs = pair_portals(world, regions) # output the entrances to the spoiler log here for convenience - sorted_portal_pairs = sort_portals(portal_pairs) - for portal1, portal2 in sorted_portal_pairs.items(): - world.multiworld.spoiler.set_entrance(portal1, portal2, "both", world.player) + sorted_portal_pairs = sort_portals(portal_pairs, world) + if not world.options.decoupled: + for portal1, portal2 in sorted_portal_pairs.items(): + world.multiworld.spoiler.set_entrance(portal1, portal2, "both", world.player) + else: + for portal1, portal2 in sorted_portal_pairs.items(): + world.multiworld.spoiler.set_entrance(portal1, portal2, "entrance", world.player) + else: portal_pairs = vanilla_portals(world, regions) - create_randomized_entrances(portal_pairs, regions) + create_randomized_entrances(world, portal_pairs, regions) set_er_region_rules(world, regions, portal_pairs) @@ -75,6 +82,7 @@ def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]: return portal_pairs +# keys are event names, values are event regions tunic_events: Dict[str, str] = { "Eastern Bell": "Forest Belltower Upper", "Western Bell": "Overworld Belltower at Bell", @@ -111,17 +119,31 @@ def place_event_items(world: "TunicWorld", regions: Dict[str, Region]) -> None: region.locations.append(location) +# keeping track of which shop numbers have been used already to avoid duplicates +# due to plando, shops can be added out of order, so a set is the best way to make this work smoothly +def get_shop_num(world: "TunicWorld") -> int: + portal_num = -1 + for i in range(500): + if i + 1 not in world.used_shop_numbers: + portal_num = i + 1 + world.used_shop_numbers.add(portal_num) + break + if portal_num == -1: + raise Exception(f"TUNIC: {world.player_name} has plando'd too many shops.") + return portal_num + + # all shops are the same shop. however, you cannot get to all shops from the same shop entrance. # so, we need a bunch of shop regions that connect to the actual shop, but the actual shop cannot connect back -def create_shop_region(world: "TunicWorld", regions: Dict[str, Region]) -> None: - new_shop_name = f"Shop {world.shop_num}" +def create_shop_region(world: "TunicWorld", regions: Dict[str, Region], portal_num) -> None: + new_shop_name = f"Shop {portal_num}" world.er_regions[new_shop_name] = RegionInfo("Shop", dead_end=DeadEnd.all_cats) new_shop_region = Region(new_shop_name, world.player, world.multiworld) new_shop_region.connect(regions["Shop"]) regions[new_shop_name] = new_shop_region - world.shop_num += 1 +# for non-ER that uses the ER rules, we create a vanilla set of portal pairs def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal, Portal]: portal_pairs: Dict[Portal, Portal] = {} # we don't want the zig skip exit for vanilla portals, since it shouldn't be considered for logic here @@ -135,9 +157,10 @@ def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Por portal2_sdt = portal1.destination_scene() if portal2_sdt.startswith("Shop,"): - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) + portal_num = get_shop_num(world) + portal2 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.none) + create_shop_region(world, regions, portal_num) for portal in portal_map: if portal.scene_destination() == portal2_sdt: @@ -152,7 +175,13 @@ def vanilla_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Por return portal_pairs -# pairing off portals, starting with dead ends +# the really long function that gives us our portal pairs +# before we start pairing, we separate the portals into dead ends and non-dead ends (two_plus) +# then, we do a few other important tasks to accommodate options and seed gropus +# first phase: pick a two_plus in a reachable region and non-reachable region and pair them +# repeat this phase until all regions are reachable +# second phase: randomly pair dead ends to random two_plus +# third phase: randomly pair the remaining two_plus to each other def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal, Portal]: portal_pairs: Dict[Portal, Portal] = {} dead_ends: List[Portal] = [] @@ -162,8 +191,9 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal laurels_zips = world.options.laurels_zips.value ice_grappling = world.options.ice_grappling.value ladder_storage = world.options.ladder_storage.value - fixed_shop = world.options.fixed_shop + entrance_layout = world.options.entrance_layout laurels_location = world.options.laurels_location + decoupled = world.options.decoupled traversal_reqs = deepcopy(traversal_requirements) has_laurels = True waterfall_plando = False @@ -174,7 +204,7 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal laurels_zips = seed_group["laurels_zips"] ice_grappling = seed_group["ice_grappling"] ladder_storage = seed_group["ladder_storage"] - fixed_shop = seed_group["fixed_shop"] + entrance_layout = seed_group["entrance_layout"] laurels_location = "10_fairies" if seed_group["laurels_at_10_fairies"] is True else False logic_tricks: Tuple[bool, int, int] = (laurels_zips, ice_grappling, ladder_storage) @@ -183,15 +213,18 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal if laurels_location == "10_fairies" and not world.using_ut: has_laurels = False - shop_count = 6 - if fixed_shop: - shop_count = 0 - else: - # if fixed shop is off, remove this portal - for portal in portal_map: - if portal.region == "Zig Skip Exit": - portal_map.remove(portal) - break + # for the direction pairs option with decoupled off + # tracks how many portals are in each direction in each list + two_plus_direction_tracker: Dict[int, int] = {direction: 0 for direction in range(8)} + dead_end_direction_tracker: Dict[int, int] = {direction: 0 for direction in range(8)} + + # for ensuring we have enough entrances in directions left that we don't leave dead ends without any + def too_few_portals_for_direction_pairs(direction: int, offset: int) -> bool: + if two_plus_direction_tracker[direction] <= (dead_end_direction_tracker[direction_pairs[direction]] + offset): + return False + if two_plus_direction_tracker[direction_pairs[direction]] <= dead_end_direction_tracker[direction] + offset: + return False + return True # If using Universal Tracker, restore portal_map. Could be cleaner, but it does not matter for UT even a little bit if world.using_ut: @@ -202,25 +235,59 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal dead_end_status = world.er_regions[portal.region].dead_end if dead_end_status == DeadEnd.free: two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 elif dead_end_status == DeadEnd.all_cats: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 elif dead_end_status == DeadEnd.restricted: if ice_grappling: two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 else: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 # these two get special handling elif dead_end_status == DeadEnd.special: if portal.region == "Secret Gathering Place": if laurels_location == "10_fairies": two_plus.append(portal) + two_plus_direction_tracker[portal.direction] += 1 else: dead_ends.append(portal) + dead_end_direction_tracker[portal.direction] += 1 + if portal.region == "Zig Skip Exit" and entrance_layout == EntranceLayout.option_fixed_shop: + # direction isn't meaningful here since zig skip cannot be in direction pairs mode + two_plus.append(portal) + + # now we generate the shops and add them to the dead ends list + shop_count = 6 + if entrance_layout == EntranceLayout.option_fixed_shop: + shop_count = 0 + else: + # if fixed shop is off, remove this portal + for portal in portal_map: if portal.region == "Zig Skip Exit": - if fixed_shop: - two_plus.append(portal) - else: - dead_ends.append(portal) + portal_map.remove(portal) + break + # need 8 shops with direction pairs or there won't be a valid set of pairs + if entrance_layout == EntranceLayout.option_direction_pairs: + shop_count = 8 + + # for universal tracker, we want to skip shop gen since it's essentially full plando + if world.using_ut: + shop_count = 0 + + for _ in range(shop_count): + # 6 of the shops have south exits, 2 of them have west exits + portal_num = get_shop_num(world) + shop_dir = Direction.south + if portal_num > 6: + shop_dir = Direction.west + shop_portal = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=shop_dir) + create_shop_region(world, regions, portal_num) + dead_ends.append(shop_portal) + dead_end_direction_tracker[shop_portal.direction] += 1 connected_regions: Set[str] = set() # make better start region stuff when/if implementing random start @@ -249,29 +316,68 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal portal_name2 = portal.name # connected_regions.update(add_dependent_regions(portal.region, logic_rules)) # shops have special handling - if not portal_name2 and portal2 == "Shop, Previous Region_": - portal_name2 = "Shop Portal" - plando_connections.append(PlandoConnection(portal_name1, portal_name2, "both")) + if not portal_name1 and portal1.startswith("Shop"): + # it should show up as "Shop, 1_" for shop 1 + portal_name1 = "Shop Portal " + str(portal1).split(", ")[1].split("_")[0] + if not portal_name2 and portal2.startswith("Shop"): + portal_name2 = "Shop Portal " + str(portal2).split(", ")[1].split("_")[0] + if world.options.decoupled: + plando_connections.append(PlandoConnection(portal_name1, portal_name2, "entrance")) + else: + plando_connections.append(PlandoConnection(portal_name1, portal_name2, "both")) + # put together the list of non-deadend regions non_dead_end_regions = set() for region_name, region_info in world.er_regions.items(): - if not region_info.dead_end: + # these are not real regions, they are just here to be descriptive + if region_info.is_fake_region or region_name == "Shop": + continue + # dead ends aren't real in decoupled + if decoupled: + non_dead_end_regions.add(region_name) + elif not region_info.dead_end: non_dead_end_regions.add(region_name) # if ice grappling to places is in logic, both places stop being dead ends elif region_info.dead_end == DeadEnd.restricted and ice_grappling: non_dead_end_regions.add(region_name) - # secret gathering place and zig skip get weird, special handling + # secret gathering place is treated as a non-dead end if 10 fairies is on to assure non-laurels access to it elif region_info.dead_end == DeadEnd.special: - if (region_name == "Secret Gathering Place" and laurels_location == "10_fairies") \ - or (region_name == "Zig Skip Exit" and fixed_shop): + if region_name == "Secret Gathering Place" and laurels_location == "10_fairies": non_dead_end_regions.add(region_name) + if decoupled: + # add the dead ends to the two plus list, since dead ends aren't real in decoupled + two_plus.extend(dead_ends) + dead_ends.clear() + # if decoupled is on, we make a second two_plus list, where the first is entrances and the second is exits + two_plus2 = two_plus.copy() + else: + # if decoupled is off, the two lists are the same list, since entrances and exits are intertwined + two_plus2 = two_plus + if plando_connections: - for connection in plando_connections: + if decoupled: + modified_plando_connections = plando_connections.copy() + for index, cxn in enumerate(modified_plando_connections): + # it's much easier if we split both-direction portals into two one-ways in decoupled + if cxn.direction == "both": + replacement1 = PlandoConnection(cxn.entrance, cxn.exit, "entrance") + replacement2 = PlandoConnection(cxn.exit, cxn.entrance, "entrance") + modified_plando_connections.remove(cxn) + modified_plando_connections.insert(index, replacement1) + modified_plando_connections.append(replacement2) + else: + modified_plando_connections = plando_connections + + connected_shop_portal1s: Set[int] = set() + connected_shop_portal2s: Set[int] = set() + for connection in modified_plando_connections: p_entrance = connection.entrance p_exit = connection.exit # if you plando secret gathering place, need to know that during portal pairing - if "Secret Gathering Place Exit" in [p_entrance, p_exit]: + if p_exit == "Secret Gathering Place Exit": + waterfall_plando = True + if p_entrance == "Secret Gathering Place Exit" and not decoupled: waterfall_plando = True portal1_dead_end = True portal2_dead_end = True @@ -279,118 +385,186 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal portal1 = None portal2 = None - # search two_plus for both at once + # search the two_plus lists (or list) for the portals for portal in two_plus: if p_entrance == portal.name: portal1 = portal portal1_dead_end = False + break + for portal in two_plus2: if p_exit == portal.name: portal2 = portal portal2_dead_end = False + break # search dead_ends individually since we can't really remove items from two_plus during the loop if portal1: two_plus.remove(portal1) else: # if not both, they're both dead ends - if not portal2: + if not portal2 and not decoupled: if world.options.entrance_rando.value not in EntranceRando.options.values(): raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " "end to a dead end in their plando connections.") else: raise Exception(f"{player_name} paired a dead end to a dead end in their " - "plando connections.") + f"plando connections -- {connection.entrance} to {connection.exit}") for portal in dead_ends: if p_entrance == portal.name: portal1 = portal + dead_ends.remove(portal1) break - if not portal1: - raise Exception(f"Could not find entrance named {p_entrance} for " - f"plando connections in {player_name}'s YAML.") - dead_ends.remove(portal1) + else: + if p_entrance.startswith("Shop Portal "): + portal_num = int(p_entrance.split("Shop Portal ")[-1]) + # shops 1-6 are south, 7 and 8 are east, and after that it just breaks direction pairs + if portal_num <= 6: + pdir = Direction.south + elif portal_num in [7, 8]: + pdir = Direction.east + else: + pdir = Direction.none + portal1 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=pdir) + connected_shop_portal1s.add(portal_num) + if portal_num not in world.used_shop_numbers: + create_shop_region(world, regions, portal_num) + world.used_shop_numbers.add(portal_num) + if decoupled and portal_num not in connected_shop_portal2s: + two_plus2.append(portal1) + non_dead_end_regions.add(portal1.region) + else: + raise Exception(f"Could not find entrance named {p_entrance} for " + f"plando connections in {player_name}'s YAML.") if portal2: - two_plus.remove(portal2) + two_plus2.remove(portal2) else: for portal in dead_ends: if p_exit == portal.name: portal2 = portal + dead_ends.remove(portal2) break - # if it's not a dead end, it might be a shop - if p_exit == "Shop Portal": - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - shop_count -= 1 - # need to maintain an even number of portals total - if shop_count < 0: - shop_count += 2 - # and if it's neither shop nor dead end, it just isn't correct + # if it's not a dead end, maybe it's a plando'd shop portal that doesn't normally exist else: if not portal2: - raise Exception(f"Could not find entrance named {p_exit} for " - f"plando connections in {player_name}'s YAML.\n" - f"If you are using Universal Tracker, the most likely reason for this error " - f"is that the host generated with a newer version of the APWorld.\n" - f"Please check the TUNIC Randomizer Github and place the newest APWorld in your " - f"custom_worlds folder, and remove the one in lib/worlds if there is one there.") - dead_ends.remove(portal2) - - # update the traversal chart to say you can get from portal1's region to portal2's and vice versa - if not portal1_dead_end and not portal2_dead_end: - traversal_reqs.setdefault(portal1.region, dict())[portal2.region] = [] - traversal_reqs.setdefault(portal2.region, dict())[portal1.region] = [] - - if (portal1.region == "Zig Skip Exit" and (portal2_dead_end or portal2.region == "Secret Gathering Place") - or portal2.region == "Zig Skip Exit" and (portal1_dead_end or portal1.region == "Secret Gathering Place")): - if world.options.entrance_rando.value not in EntranceRando.options.values(): - raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " - "end to a dead end in their plando connections.") - else: - raise Exception(f"{player_name} paired a dead end to a dead end in their " - "plando connections.") - - if (portal1.region == "Secret Gathering Place" and (portal2_dead_end or portal2.region == "Zig Skip Exit") - or portal2.region == "Secret Gathering Place" and (portal1_dead_end or portal1.region == "Zig Skip Exit")): - # need to make sure you didn't pair this to a dead end or zig skip - if portal1_dead_end or portal2_dead_end or \ - portal1.region == "Zig Skip Exit" or portal2.region == "Zig Skip Exit": + if p_exit.startswith("Shop Portal "): + portal_num = int(p_exit.split("Shop Portal ")[-1]) + if portal_num <= 6: + pdir = Direction.south + elif portal_num in [7, 8]: + pdir = Direction.east + else: + pdir = Direction.none + portal2 = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=pdir) + connected_shop_portal2s.add(portal_num) + if portal_num not in world.used_shop_numbers: + create_shop_region(world, regions, portal_num) + world.used_shop_numbers.add(portal_num) + if decoupled and portal_num not in connected_shop_portal1s: + two_plus.append(portal2) + non_dead_end_regions.add(portal2.region) + else: + raise Exception(f"Could not find entrance named {p_exit} for " + f"plando connections in {player_name}'s YAML.") + + # if we're doing decoupled, we don't need to do complex checks + if decoupled: + # we turn any plando that uses "exit" to use "entrance" instead + traversal_reqs.setdefault(portal1.region, dict())[get_portal_outlet_region(portal2, world)] = [] + # outside decoupled, we want to use what we were doing before decoupled got added + else: + # update the traversal chart to say you can get from portal1's region to portal2's and vice versa + if not portal1_dead_end and not portal2_dead_end: + traversal_reqs.setdefault(portal1.region, dict())[get_portal_outlet_region(portal2, world)] = [] + traversal_reqs.setdefault(portal2.region, dict())[get_portal_outlet_region(portal1, world)] = [] + + if (portal1.region == "Zig Skip Exit" and (portal2_dead_end or portal2.region == "Secret Gathering Place") + or portal2.region == "Zig Skip Exit" and (portal1_dead_end or portal1.region == "Secret Gathering Place")): if world.options.entrance_rando.value not in EntranceRando.options.values(): raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " "end to a dead end in their plando connections.") else: raise Exception(f"{player_name} paired a dead end to a dead end in their " "plando connections.") + + if (portal1.region == "Secret Gathering Place" and (portal2_dead_end or portal2.region == "Zig Skip Exit") + or portal2.region == "Secret Gathering Place" and (portal1_dead_end or portal1.region == "Zig Skip Exit")): + # need to make sure you didn't pair this to a dead end or zig skip + if portal1_dead_end or portal2_dead_end or \ + portal1.region == "Zig Skip Exit" or portal2.region == "Zig Skip Exit": + if world.options.entrance_rando.value not in EntranceRando.options.values(): + raise Exception(f"Tunic ER seed group {world.options.entrance_rando.value} paired a dead " + "end to a dead end in their plando connections.") + else: + raise Exception(f"{player_name} paired a dead end to a dead end in their " + "plando connections.") + # okay now that we're done with all of that nonsense, we can finally make the portal pair portal_pairs[portal1] = portal2 + if portal1_dead_end: + dead_end_direction_tracker[portal1.direction] -= 1 + else: + two_plus_direction_tracker[portal1.direction] -= 1 + if portal2_dead_end: + dead_end_direction_tracker[portal2.direction] -= 1 + else: + two_plus_direction_tracker[portal2.direction] -= 1 + # if we have plando connections, our connected regions may change somewhat connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - if fixed_shop and not world.using_ut: - portal1 = None + # if there are an odd number of shops after plando, add another one, except in decoupled where it doesn't matter + if not decoupled and len(world.used_shop_numbers) % 2 == 1: + if entrance_layout == EntranceLayout.option_direction_pairs: + raise Exception(f"TUNIC: {world.player_name} plando'd too many shops for the Direction Pairs option.") + portal_num = get_shop_num(world) + shop_portal = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.none) + create_shop_region(world, regions, portal_num) + dead_ends.append(shop_portal) + + if entrance_layout == EntranceLayout.option_fixed_shop and not world.using_ut: + windmill = None for portal in two_plus: if portal.scene_destination() == "Overworld Redux, Windmill_": - portal1 = portal + windmill = portal break - if not portal1: - raise Exception(f"Failed to do Fixed Shop option. " - f"Did {player_name} plando connection the Windmill Shop entrance?") + if not windmill: + raise Exception(f"Failed to do Fixed Shop option for Entrance Layout. " + f"Did {player_name} plando the Windmill Shop entrance?") + + portal_num = get_shop_num(world) + shop = Portal(name=f"Shop Portal {portal_num}", region=f"Shop {portal_num}", + destination=str(portal_num), tag="_", direction=Direction.south) + create_shop_region(world, regions, portal_num) + + portal_pairs[windmill] = shop + two_plus.remove(windmill) + if decoupled: + two_plus.append(shop) + non_dead_end_regions.add(shop.region) + connected_regions.add(shop.region) - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - - portal_pairs[portal1] = portal2 - two_plus.remove(portal1) - - random_object: Random = world.random # use the seed given in the options to shuffle the portals if isinstance(world.options.entrance_rando.value, str): random_object = Random(world.options.entrance_rando.value) + else: + random_object: Random = world.random + # we want to start by making sure every region is accessible random_object.shuffle(two_plus) - check_success = 0 + + # this is a backup in case we run into that rare direction pairing failure + # so that we don't have to redo the plando bit basically + backup_connected_regions = connected_regions.copy() + backup_portal_pairs = portal_pairs.copy() + backup_two_plus = two_plus.copy() + backup_two_plus_direction_tracker = two_plus_direction_tracker.copy() + rare_failure_count = 0 + portal1 = None portal2 = None previous_conn_num = 0 @@ -403,96 +577,182 @@ def pair_portals(world: "TunicWorld", regions: Dict[str, Region]) -> Dict[Portal # should, hopefully, only ever occur if someone plandos connections poorly if previous_conn_num == len(connected_regions): fail_count += 1 - if fail_count >= 500: + if fail_count > 500: raise Exception(f"Failed to pair regions. Check plando connections for {player_name} for errors. " - "Unconnected regions:", non_dead_end_regions - connected_regions) + f"Unconnected regions: {non_dead_end_regions - connected_regions}.\n" + f"Unconnected portals: {[portal.name for portal in two_plus]}") + if (fail_count > 100 and not decoupled + and (world.options.entrance_layout == EntranceLayout.option_direction_pairs or waterfall_plando)): + # in direction pairs, we may run into a case where we run out of pairable directions + # since we need to ensure the dead ends will have something to connect to + # or if fairy cave is plando'd, it may run into an issue where it is trying to get access to 2 separate + # areas at once to give access to laurels + # so, this is basically just resetting entrance pairing + # this should be very rare, so this fail-safe shouldn't be covering up for an actual solution + # this should never happen in decoupled, since it's entirely too flexible for that + portal_pairs = backup_portal_pairs.copy() + two_plus = two_plus2 = backup_two_plus.copy() + two_plus_direction_tracker = backup_two_plus_direction_tracker.copy() + random_object.shuffle(two_plus) + connected_regions = backup_connected_regions.copy() + rare_failure_count += 1 + fail_count = 0 + + if rare_failure_count > 100: + raise Exception(f"Failed to pair regions due to rare pairing issues for {player_name}. " + f"Unconnected regions: {non_dead_end_regions - connected_regions}.\n" + f"Unconnected portals: {[portal.name for portal in two_plus]}") else: fail_count = 0 previous_conn_num = len(connected_regions) # find a portal in a connected region - if check_success == 0: - for portal in two_plus: - if portal.region in connected_regions: - portal1 = portal - two_plus.remove(portal) - check_success = 1 - break + for portal in two_plus: + if portal.region in connected_regions: + # if there's more dead ends of a direction than two plus of the opposite direction, + # then we'll run out of viable connections for those dead ends later + # decoupled does not have this issue since dead ends aren't real in decoupled + if not decoupled and entrance_layout == EntranceLayout.option_direction_pairs: + if not too_few_portals_for_direction_pairs(portal.direction, 0): + continue - # then we find a portal in an inaccessible region - if check_success == 1: - for portal in two_plus: - if portal.region not in connected_regions: - # if secret gathering place happens to get paired really late, you can end up running out - if not has_laurels and len(two_plus) < 80: - # if you plando'd secret gathering place with laurels at 10 fairies, you're the reason for this - if waterfall_plando: - cr = connected_regions.copy() - cr.add(portal.region) - if "Secret Gathering Place" not in update_reachable_regions(cr, traversal_reqs, has_laurels, logic_tricks): - continue - # if not waterfall_plando, then we just want to pair secret gathering place now - elif portal.region != "Secret Gathering Place": + portal1 = portal + two_plus.remove(portal) + break + if not portal1: + raise Exception("TUNIC: Failed to pair portals at first part of first phase.") + + # then we find a portal in an unconnected region + for portal in two_plus2: + if portal.region not in connected_regions: + # if secret gathering place happens to get paired really late, you can end up running out + if not has_laurels and len(two_plus2) < 80: + # if you plando'd secret gathering place with laurels at 10 fairies, you're the reason for this + if waterfall_plando: + cr = connected_regions.copy() + cr.add(portal.region) + if "Secret Gathering Place" not in update_reachable_regions(cr, traversal_reqs, has_laurels, logic_tricks): continue - portal2 = portal - connected_regions.add(portal.region) - two_plus.remove(portal) - check_success = 2 - break + # if not waterfall_plando, then we just want to pair secret gathering place now + elif portal.region != "Secret Gathering Place": + continue + + # if they're not facing opposite directions, just continue + if entrance_layout == EntranceLayout.option_direction_pairs and not verify_direction_pair(portal, portal1): + continue + + # if you have direction pairs, we need to make sure we don't run out of spots for problem portals + # this cuts down on using the failsafe significantly + if not decoupled and entrance_layout == EntranceLayout.option_direction_pairs: + should_continue = False + # these portals are weird since they're one-ways essentially + # we need to make sure they are connected in this first phase + south_problems = ["Ziggurat Upper to Ziggurat Entry Hallway", + "Ziggurat Tower to Ziggurat Upper", "Forest Belltower to Guard Captain Room"] + if (portal.direction == Direction.south and portal.name not in south_problems + and not too_few_portals_for_direction_pairs(portal.direction, 3)): + for test_portal in two_plus: + if test_portal.name in south_problems: + should_continue = True + # at risk of connecting frog's domain entry ladder to librarian exit + if (portal.direction == Direction.ladder_down + or portal.direction == Direction.ladder_up and portal.name != "Frog's Domain Ladder Exit" + and not too_few_portals_for_direction_pairs(portal.direction, 1)): + for test_portal in two_plus: + if test_portal.name == "Frog's Domain Ladder Exit": + should_continue = True + if should_continue: + continue + + portal2 = portal + connected_regions.add(get_portal_outlet_region(portal, world)) + two_plus2.remove(portal) + break + + if not portal2: + if entrance_layout == EntranceLayout.option_direction_pairs or waterfall_plando: + # portal1 doesn't have a valid direction pair yet, throw it back and start over + two_plus.append(portal1) + continue + else: + raise Exception(f"TUNIC: Failed to pair portals at second part of first phase for {world.player_name}.") # once we have both portals, connect them and add the new region(s) to connected_regions - if check_success == 2: - if "Secret Gathering Place" in connected_regions: - has_laurels = True - connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - portal_pairs[portal1] = portal2 - check_success = 0 - random_object.shuffle(two_plus) + if not has_laurels and "Secret Gathering Place" in connected_regions: + has_laurels = True + connected_regions = update_reachable_regions(connected_regions, traversal_reqs, has_laurels, logic_tricks) - # for universal tracker, we want to skip shop gen - if world.using_ut: - shop_count = 0 - - for i in range(shop_count): - portal1 = two_plus.pop() - if portal1 is None: - raise Exception("TUNIC: Too many shops in the pool, or something else went wrong.") - portal2 = Portal(name=f"Shop Portal {world.shop_num}", region=f"Shop {world.shop_num}", - destination="Previous Region", tag="_") - create_shop_region(world, regions) - portal_pairs[portal1] = portal2 + two_plus_direction_tracker[portal1.direction] -= 1 + two_plus_direction_tracker[portal2.direction] -= 1 + portal1 = None + portal2 = None + random_object.shuffle(two_plus) + if two_plus != two_plus2: + random_object.shuffle(two_plus2) # connect dead ends to random non-dead ends - # none of the key events are in dead ends, so we don't need to do gate_before_switch + # there are no dead ends in decoupled while len(dead_ends) > 0: if world.using_ut: break - portal1 = two_plus.pop() - portal2 = dead_ends.pop() - portal_pairs[portal1] = portal2 + portal2 = dead_ends[0] + for portal in two_plus: + if entrance_layout == EntranceLayout.option_direction_pairs and not verify_direction_pair(portal, portal2): + continue + if entrance_layout == EntranceLayout.option_fixed_shop and portal.region == "Zig Skip Exit": + continue + portal1 = portal + portal_pairs[portal1] = portal2 + two_plus.remove(portal1) + dead_ends.remove(portal2) + break + else: + raise Exception(f"Failed to pair {portal2.name} with anything in two_plus for player {world.player_name}.") + # then randomly connect the remaining portals to each other - # every region is accessible, so gate_before_switch is not necessary - while len(two_plus) > 1: + final_pair_number = 0 + while len(two_plus) > 0: if world.using_ut: break - portal1 = two_plus.pop() - portal2 = two_plus.pop() + final_pair_number += 1 + if final_pair_number > 10000: + raise Exception(f"Failed to pair portals while pairing the final entrances off to each other. " + f"Remaining portals in two_plus: {[portal.name for portal in two_plus]}. " + f"Remaining portals in two_plus2: {[portal.name for portal in two_plus2]}.") + portal1 = two_plus[0] + two_plus.remove(portal1) + portal2 = None + if entrance_layout != EntranceLayout.option_direction_pairs: + portal2 = two_plus2.pop() + else: + for portal in two_plus2: + if verify_direction_pair(portal1, portal): + portal2 = portal + two_plus2.remove(portal2) + break + if portal2 is None: + raise Exception("Something went wrong with the remaining two plus portals. Contact the TUNIC rando devs.") portal_pairs[portal1] = portal2 - if len(two_plus) == 1: - raise Exception("two plus had an odd number of portals, investigate this. last portal is " + two_plus[0].name) + if len(two_plus2) > 0: + raise Exception(f"TUNIC: Something went horribly wrong in ER for {world.player_name}. " + f"Please contact the TUNIC rando devs.") return portal_pairs # loop through our list of paired portals and make two-way connections -def create_randomized_entrances(portal_pairs: Dict[Portal, Portal], regions: Dict[str, Region]) -> None: +def create_randomized_entrances(world: "TunicWorld", portal_pairs: Dict[Portal, Portal], regions: Dict[str, Region]) -> None: for portal1, portal2 in portal_pairs.items(): - region1 = regions[portal1.region] - region2 = regions[portal2.region] - region1.connect(connecting_region=region2, name=portal1.name) - region2.connect(connecting_region=region1, name=portal2.name) + # connect to the outlet region if there is one, if not connect to the actual region + regions[portal1.region].connect( + connecting_region=regions[get_portal_outlet_region(portal2, world)], + name=portal1.name) + if not world.options.decoupled or not world.options.entrance_rando: + regions[portal2.region].connect( + connecting_region=regions[get_portal_outlet_region(portal1, world)], + name=portal2.name) def update_reachable_regions(connected_regions: Set[str], traversal_reqs: Dict[str, Dict[str, List[List[str]]]], @@ -541,22 +801,58 @@ def update_reachable_regions(connected_regions: Set[str], traversal_reqs: Dict[s return connected_regions +# which directions are opposites +direction_pairs: Dict[int, int] = { + Direction.north: Direction.south, + Direction.south: Direction.north, + Direction.east: Direction.west, + Direction.west: Direction.east, + Direction.ladder_up: Direction.ladder_down, + Direction.ladder_down: Direction.ladder_up, + Direction.floor: Direction.floor, +} + + +# verify that two portals are in compatible directions +def verify_direction_pair(portal1: Portal, portal2: Portal) -> bool: + return portal1.direction == direction_pairs[portal2.direction] + + +# verify that two plando'd portals are in compatible directions +def verify_plando_directions(connection: PlandoConnection) -> bool: + entrance_portal = None + exit_portal = None + for portal in portal_mapping: + if connection.entrance == portal.name: + entrance_portal = portal + if connection.exit == portal.name: + exit_portal = portal + if entrance_portal and exit_portal: + break + # neither of these are shops, so verify the pair + if entrance_portal and exit_portal: + return verify_direction_pair(entrance_portal, exit_portal) + # this is two shop portals, they can never pair directions + elif not entrance_portal and not exit_portal: + return False + # if one of them is none, it's a shop, which has two possible directions + elif not entrance_portal: + return exit_portal.direction in [Direction.north, Direction.east] + elif not exit_portal: + return entrance_portal.direction in [Direction.north, Direction.east] + else: + # shouldn't be reachable, more of a just in case + raise Exception("Something went very wrong with verify_plando_directions") + + # sort the portal dict by the name of the first portal, referring to the portal order in the master portal list -def sort_portals(portal_pairs: Dict[Portal, Portal]) -> Dict[str, str]: +def sort_portals(portal_pairs: Dict[Portal, Portal], world: "TunicWorld") -> Dict[str, str]: sorted_pairs: Dict[str, str] = {} reference_list: List[str] = [portal.name for portal in portal_mapping] - reference_list.append("Shop Portal") - # note: this is not necessary yet since the shop portals aren't numbered yet -- they will be when decoupled happens # due to plando, there can be a variable number of shops - # I could either do it like this, or just go up to like 200, this seemed better - # shop_count = 0 - # for portal1, portal2 in portal_pairs.items(): - # if portal1.name.startswith("Shop"): - # shop_count += 1 - # if portal2.name.startswith("Shop"): - # shop_count += 1 - # reference_list.extend([f"Shop Portal {i + 1}" for i in range(shop_count)]) + largest_shop_number = max(world.used_shop_numbers) + reference_list.extend([f"Shop Portal {i + 1}" for i in range(largest_shop_number)]) for name in reference_list: for portal1, portal2 in portal_pairs.items(): diff --git a/worlds/tunic/options.py b/worlds/tunic/options.py index c17b085b1187..09e2d1d604ca 100644 --- a/worlds/tunic/options.py +++ b/worlds/tunic/options.py @@ -5,7 +5,7 @@ from decimal import Decimal, ROUND_HALF_UP from Options import (DefaultOnToggle, Toggle, StartInventoryPool, Choice, Range, TextChoice, PlandoConnections, - PerGameCommonOptions, OptionGroup, Visibility, NamedRange) + PerGameCommonOptions, OptionGroup, Removed, Visibility, NamedRange) from .er_data import portal_mapping if TYPE_CHECKING: from . import TunicWorld @@ -147,14 +147,42 @@ class EntranceRando(TextChoice): class FixedShop(Toggle): """ - Forces the Windmill entrance to lead to a shop, and removes the remaining shops from the pool. - Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances. - Has no effect if Entrance Rando is not enabled. + This option has been superseded by the Entrance Layout option. + If enabled, it will override the Entrance Layout option. + This is kept to keep older yamls working, and will be removed at a later date. """ + visibility = Visibility.none internal_name = "fixed_shop" display_name = "Fewer Shops in Entrance Rando" +class EntranceLayout(Choice): + """ + Decide how the Entrance Randomizer chooses how to pair the entrances. + Standard: Entrances are randomly connected. There are 6 shops in the pool with this option. + Fixed Shop: Forces the Windmill entrance to lead to a shop, and removes the other shops from the pool. + Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances. + Direction Pairs: Entrances facing opposite directions are paired together. There are 8 shops in the pool with this option. + Note: For seed groups, if one player in a group chooses Fixed Shop and another chooses Direction Pairs, it will error out. + Either of these options will override Standard within a seed group. + """ + internal_name = "entrance_layout" + display_name = "Entrance Layout" + option_standard = 0 + option_fixed_shop = 1 + option_direction_pairs = 2 + default = 0 + + +class Decoupled(Toggle): + """ + Decouple the entrances, so that when you go from one entrance to another, the return trip won't necessarily bring you back to the same place. + Note: For seed groups, all players in the group must have this option enabled or disabled. + """ + internal_name = "decoupled" + display_name = "Decoupled Entrances" + + class LaurelsLocation(Choice): """ Force the Hero's Laurels to be placed at a location in your world. @@ -210,13 +238,22 @@ class LocalFill(NamedRange): class TunicPlandoConnections(PlandoConnections): """ Generic connection plando. Format is: - - entrance: "Entrance Name" - exit: "Exit Name" + - entrance: Entrance Name + exit: Exit Name + direction: Direction percentage: 100 + Direction must be one of entrance, exit, or both, and defaults to both if omitted. + Direction entrance means the entrance leads to the exit. Direction exit means the exit leads to the entrance. + If you do not have Decoupled enabled, you do not need the direction line, as it will only use both. Percentage is an integer from 0 to 100 which determines whether that connection will be made. Defaults to 100 if omitted. + If the Entrance Layout option is set to Standard or Fixed Shop, you can plando multiple shops. + If the Entrance Layout option is set to Direction Pairs, your plando connections must be facing opposite directions. + Shop Portal 1-6 are South portals, and Shop Portal 7-8 are West portals. + This option does nothing if Entrance Rando is disabled. """ - entrances = {*(portal.name for portal in portal_mapping), "Shop", "Shop Portal"} - exits = {*(portal.name for portal in portal_mapping), "Shop", "Shop Portal"} + shops = {f"Shop Portal {i + 1}" for i in range(500)} + entrances = {portal.name for portal in portal_mapping}.union(shops) + exits = {portal.name for portal in portal_mapping}.union(shops) duplicate_exits = True @@ -295,6 +332,16 @@ class LadderStorageWithoutItems(Toggle): display_name = "Ladder Storage without Items" +class HiddenAllRandom(Toggle): + """ + Sets all options that can be random to random. + For test gens. + """ + internal_name = "all_random" + display_name = "All Random Debug" + visibility = Visibility.none + + class LogicRules(Choice): """ This option has been superseded by the individual trick options. @@ -329,6 +376,7 @@ class TunicOptions(PerGameCommonOptions): start_with_sword: StartWithSword keys_behind_bosses: KeysBehindBosses ability_shuffling: AbilityShuffling + fool_traps: FoolTraps laurels_location: LaurelsLocation @@ -343,7 +391,9 @@ class TunicOptions(PerGameCommonOptions): local_fill: LocalFill entrance_rando: EntranceRando - fixed_shop: FixedShop + entrance_layout: EntranceLayout + decoupled: Decoupled + plando_connections: TunicPlandoConnections combat_logic: CombatLogic lanternless: Lanternless @@ -352,10 +402,11 @@ class TunicOptions(PerGameCommonOptions): ice_grappling: IceGrappling ladder_storage: LadderStorage ladder_storage_without_items: LadderStorageWithoutItems + + all_random: HiddenAllRandom - plando_connections: TunicPlandoConnections - - logic_rules: LogicRules + fixed_shop: FixedShop # will be removed at a later date + logic_rules: Removed # fully removed in the direction pairs update tunic_option_groups = [ @@ -372,8 +423,14 @@ class TunicOptions(PerGameCommonOptions): LaurelsZips, IceGrappling, LadderStorage, - LadderStorageWithoutItems - ]) + LadderStorageWithoutItems, + ]), + OptionGroup("Entrance Randomizer", [ + EntranceRando, + EntranceLayout, + Decoupled, + TunicPlandoConnections, + ]), ] tunic_option_presets: Dict[str, Dict[str, Any]] = { diff --git a/worlds/tunic/rules.py b/worlds/tunic/rules.py index 2c5abb424d98..52d5c42e5115 100644 --- a/worlds/tunic/rules.py +++ b/worlds/tunic/rules.py @@ -1,5 +1,4 @@ from typing import Dict, TYPE_CHECKING -from decimal import Decimal, ROUND_HALF_UP from worlds.generic.Rules import set_rule, forbid_item, add_rule from BaseClasses import CollectionState @@ -157,8 +156,8 @@ def set_region_rules(world: "TunicWorld") -> None: if options.ladder_storage >= LadderStorage.option_medium: # ls at any ladder in a safe spot in quarry to get to the monastery rope entrance - world.get_region("Quarry Back").connect(world.get_region("Monastery"), - rule=lambda state: can_ladder_storage(state, world)) + add_rule(world.get_entrance(entrance_name="Quarry Back -> Monastery"), + rule=lambda state: can_ladder_storage(state, world)) def set_location_rules(world: "TunicWorld") -> None: diff --git a/worlds/tunic/test/test_access.py b/worlds/tunic/test/test_access.py index 24551a13d547..6a26180cf026 100644 --- a/worlds/tunic/test/test_access.py +++ b/worlds/tunic/test/test_access.py @@ -78,7 +78,8 @@ class TestERSpecial(TunicTestBase): options = {options.EntranceRando.internal_name: options.EntranceRando.option_yes, options.AbilityShuffling.internal_name: options.AbilityShuffling.option_true, options.HexagonQuest.internal_name: options.HexagonQuest.option_false, - options.FixedShop.internal_name: options.FixedShop.option_false, + options.CombatLogic.internal_name: options.CombatLogic.option_off, + options.EntranceLayout.internal_name: options.EntranceLayout.option_fixed_shop, options.IceGrappling.internal_name: options.IceGrappling.option_easy, "plando_connections": [ { @@ -126,3 +127,262 @@ def test_ls_to_shop_entrance(self) -> None: self.assertFalse(self.can_reach_location("Fortress Courtyard - Page Near Cave")) self.collect_by_name(["Pages 24-25 (Prayer)"]) self.assertTrue(self.can_reach_location("Fortress Courtyard - Page Near Cave")) + + +# check that it still functions if in decoupled and every single normal entrance leads to a shop +class TestERDecoupledPlando(TunicTestBase): + options = {options.EntranceRando.internal_name: options.EntranceRando.option_yes, + options.Decoupled.internal_name: options.Decoupled.option_true, + "plando_connections": [ + {"entrance": "Stick House Entrance", "exit": "Shop Portal 1", "direction": "entrance"}, + {"entrance": "Windmill Entrance", "exit": "Shop Portal 2", "direction": "entrance"}, + {"entrance": "Well Ladder Entrance", "exit": "Shop Portal 3", "direction": "entrance"}, + {"entrance": "Entrance to Well from Well Rail", "exit": "Shop Portal 4", "direction": "entrance"}, + {"entrance": "Old House Door Entrance", "exit": "Shop Portal 5", "direction": "entrance"}, + {"entrance": "Old House Waterfall Entrance", "exit": "Shop Portal 6", "direction": "entrance"}, + {"entrance": "Entrance to Furnace from Well Rail", "exit": "Shop Portal 7", "direction": "entrance"}, + {"entrance": "Entrance to Furnace under Windmill", "exit": "Shop Portal 8", "direction": "entrance"}, + {"entrance": "Entrance to Furnace near West Garden", "exit": "Shop Portal 9", + "direction": "entrance"}, + {"entrance": "Entrance to Furnace from Beach", "exit": "Shop Portal 10", "direction": "entrance"}, + {"entrance": "Caustic Light Cave Entrance", "exit": "Shop Portal 11", "direction": "entrance"}, + {"entrance": "Swamp Upper Entrance", "exit": "Shop Portal 12", "direction": "entrance"}, + {"entrance": "Swamp Lower Entrance", "exit": "Shop Portal 13", "direction": "entrance"}, + {"entrance": "Ruined Passage Not-Door Entrance", "exit": "Shop Portal 14", "direction": "entrance"}, + {"entrance": "Ruined Passage Door Entrance", "exit": "Shop Portal 15", "direction": "entrance"}, + {"entrance": "Atoll Upper Entrance", "exit": "Shop Portal 16", "direction": "entrance"}, + {"entrance": "Atoll Lower Entrance", "exit": "Shop Portal 17", "direction": "entrance"}, + {"entrance": "Special Shop Entrance", "exit": "Shop Portal 18", "direction": "entrance"}, + {"entrance": "Maze Cave Entrance", "exit": "Shop Portal 19", "direction": "entrance"}, + {"entrance": "West Garden Entrance near Belltower", "exit": "Shop Portal 20", + "direction": "entrance"}, + {"entrance": "West Garden Entrance from Furnace", "exit": "Shop Portal 21", "direction": "entrance"}, + {"entrance": "West Garden Laurels Entrance", "exit": "Shop Portal 22", "direction": "entrance"}, + {"entrance": "Temple Door Entrance", "exit": "Shop Portal 23", "direction": "entrance"}, + {"entrance": "Temple Rafters Entrance", "exit": "Shop Portal 24", "direction": "entrance"}, + {"entrance": "Ruined Shop Entrance", "exit": "Shop Portal 25", "direction": "entrance"}, + {"entrance": "Patrol Cave Entrance", "exit": "Shop Portal 26", "direction": "entrance"}, + {"entrance": "Hourglass Cave Entrance", "exit": "Shop Portal 27", "direction": "entrance"}, + {"entrance": "Changing Room Entrance", "exit": "Shop Portal 28", "direction": "entrance"}, + {"entrance": "Cube Cave Entrance", "exit": "Shop Portal 29", "direction": "entrance"}, + {"entrance": "Stairs from Overworld to Mountain", "exit": "Shop Portal 30", "direction": "entrance"}, + {"entrance": "Overworld to Fortress", "exit": "Shop Portal 31", "direction": "entrance"}, + {"entrance": "Fountain HC Door Entrance", "exit": "Shop Portal 32", "direction": "entrance"}, + {"entrance": "Southeast HC Door Entrance", "exit": "Shop Portal 33", "direction": "entrance"}, + {"entrance": "Overworld to Quarry Connector", "exit": "Shop Portal 34", "direction": "entrance"}, + {"entrance": "Dark Tomb Main Entrance", "exit": "Shop Portal 35", "direction": "entrance"}, + {"entrance": "Overworld to Forest Belltower", "exit": "Shop Portal 36", "direction": "entrance"}, + {"entrance": "Town to Far Shore", "exit": "Shop Portal 37", "direction": "entrance"}, + {"entrance": "Spawn to Far Shore", "exit": "Shop Portal 38", "direction": "entrance"}, + {"entrance": "Secret Gathering Place Entrance", "exit": "Shop Portal 39", "direction": "entrance"}, + {"entrance": "Secret Gathering Place Exit", "exit": "Shop Portal 40", "direction": "entrance"}, + {"entrance": "Windmill Exit", "exit": "Shop Portal 41", "direction": "entrance"}, + {"entrance": "Windmill Shop", "exit": "Shop Portal 42", "direction": "entrance"}, + {"entrance": "Old House Door Exit", "exit": "Shop Portal 43", "direction": "entrance"}, + {"entrance": "Old House to Glyph Tower", "exit": "Shop Portal 44", "direction": "entrance"}, + {"entrance": "Old House Waterfall Exit", "exit": "Shop Portal 45", "direction": "entrance"}, + {"entrance": "Glyph Tower Exit", "exit": "Shop Portal 46", "direction": "entrance"}, + {"entrance": "Changing Room Exit", "exit": "Shop Portal 47", "direction": "entrance"}, + {"entrance": "Fountain HC Room Exit", "exit": "Shop Portal 48", "direction": "entrance"}, + {"entrance": "Cube Cave Exit", "exit": "Shop Portal 49", "direction": "entrance"}, + {"entrance": "Guard Patrol Cave Exit", "exit": "Shop Portal 50", "direction": "entrance"}, + {"entrance": "Ruined Shop Exit", "exit": "Shop Portal 51", "direction": "entrance"}, + {"entrance": "Furnace Exit towards Well", "exit": "Shop Portal 52", "direction": "entrance"}, + {"entrance": "Furnace Exit to Dark Tomb", "exit": "Shop Portal 53", "direction": "entrance"}, + {"entrance": "Furnace Exit towards West Garden", "exit": "Shop Portal 54", "direction": "entrance"}, + {"entrance": "Furnace Exit to Beach", "exit": "Shop Portal 55", "direction": "entrance"}, + {"entrance": "Furnace Exit under Windmill", "exit": "Shop Portal 56", "direction": "entrance"}, + {"entrance": "Stick House Exit", "exit": "Shop Portal 57", "direction": "entrance"}, + {"entrance": "Ruined Passage Not-Door Exit", "exit": "Shop Portal 58", "direction": "entrance"}, + {"entrance": "Ruined Passage Door Exit", "exit": "Shop Portal 59", "direction": "entrance"}, + {"entrance": "Southeast HC Room Exit", "exit": "Shop Portal 60", "direction": "entrance"}, + {"entrance": "Caustic Light Cave Exit", "exit": "Shop Portal 61", "direction": "entrance"}, + {"entrance": "Maze Cave Exit", "exit": "Shop Portal 62", "direction": "entrance"}, + {"entrance": "Hourglass Cave Exit", "exit": "Shop Portal 63", "direction": "entrance"}, + {"entrance": "Special Shop Exit", "exit": "Shop Portal 64", "direction": "entrance"}, + {"entrance": "Temple Rafters Exit", "exit": "Shop Portal 65", "direction": "entrance"}, + {"entrance": "Temple Door Exit", "exit": "Shop Portal 66", "direction": "entrance"}, + {"entrance": "Forest Belltower to Fortress", "exit": "Shop Portal 67", "direction": "entrance"}, + {"entrance": "Forest Belltower to Forest", "exit": "Shop Portal 68", "direction": "entrance"}, + {"entrance": "Forest Belltower to Overworld", "exit": "Shop Portal 69", "direction": "entrance"}, + {"entrance": "Forest Belltower to Guard Captain Room", "exit": "Shop Portal 70", + "direction": "entrance"}, + {"entrance": "Forest to Belltower", "exit": "Shop Portal 71", "direction": "entrance"}, + {"entrance": "Forest Guard House 1 Lower Entrance", "exit": "Shop Portal 72", + "direction": "entrance"}, + {"entrance": "Forest Guard House 1 Gate Entrance", "exit": "Shop Portal 73", + "direction": "entrance"}, + {"entrance": "Forest Dance Fox Outside Doorway", "exit": "Shop Portal 74", "direction": "entrance"}, + {"entrance": "Forest to Far Shore", "exit": "Shop Portal 75", "direction": "entrance"}, + {"entrance": "Forest Guard House 2 Lower Entrance", "exit": "Shop Portal 76", + "direction": "entrance"}, + {"entrance": "Forest Guard House 2 Upper Entrance", "exit": "Shop Portal 77", + "direction": "entrance"}, + {"entrance": "Forest Grave Path Lower Entrance", "exit": "Shop Portal 78", "direction": "entrance"}, + {"entrance": "Forest Grave Path Upper Entrance", "exit": "Shop Portal 79", "direction": "entrance"}, + {"entrance": "Forest Grave Path Upper Exit", "exit": "Shop Portal 80", "direction": "entrance"}, + {"entrance": "Forest Grave Path Lower Exit", "exit": "Shop Portal 81", "direction": "entrance"}, + {"entrance": "East Forest Hero's Grave", "exit": "Shop Portal 82", "direction": "entrance"}, + {"entrance": "Guard House 1 Dance Fox Exit", "exit": "Shop Portal 83", "direction": "entrance"}, + {"entrance": "Guard House 1 Lower Exit", "exit": "Shop Portal 84", "direction": "entrance"}, + {"entrance": "Guard House 1 Upper Forest Exit", "exit": "Shop Portal 85", "direction": "entrance"}, + {"entrance": "Guard House 1 to Guard Captain Room", "exit": "Shop Portal 86", + "direction": "entrance"}, + {"entrance": "Guard House 2 Lower Exit", "exit": "Shop Portal 87", "direction": "entrance"}, + {"entrance": "Guard House 2 Upper Exit", "exit": "Shop Portal 88", "direction": "entrance"}, + {"entrance": "Guard Captain Room Non-Gate Exit", "exit": "Shop Portal 89", "direction": "entrance"}, + {"entrance": "Guard Captain Room Gate Exit", "exit": "Shop Portal 90", "direction": "entrance"}, + {"entrance": "Well Ladder Exit", "exit": "Shop Portal 91", "direction": "entrance"}, + {"entrance": "Well to Well Boss", "exit": "Shop Portal 92", "direction": "entrance"}, + {"entrance": "Well Exit towards Furnace", "exit": "Shop Portal 93", "direction": "entrance"}, + {"entrance": "Well Boss to Well", "exit": "Shop Portal 94", "direction": "entrance"}, + {"entrance": "Checkpoint to Dark Tomb", "exit": "Shop Portal 95", "direction": "entrance"}, + {"entrance": "Dark Tomb to Overworld", "exit": "Shop Portal 96", "direction": "entrance"}, + {"entrance": "Dark Tomb to Furnace", "exit": "Shop Portal 97", "direction": "entrance"}, + {"entrance": "Dark Tomb to Checkpoint", "exit": "Shop Portal 98", "direction": "entrance"}, + {"entrance": "West Garden Exit near Hero's Grave", "exit": "Shop Portal 99", + "direction": "entrance"}, + {"entrance": "West Garden to Magic Dagger House", "exit": "Shop Portal 100", + "direction": "entrance"}, + {"entrance": "West Garden Exit after Boss", "exit": "Shop Portal 101", "direction": "entrance"}, + {"entrance": "West Garden Shop", "exit": "Shop Portal 102", "direction": "entrance"}, + {"entrance": "West Garden Laurels Exit", "exit": "Shop Portal 103", "direction": "entrance"}, + {"entrance": "West Garden Hero's Grave", "exit": "Shop Portal 104", "direction": "entrance"}, + {"entrance": "West Garden to Far Shore", "exit": "Shop Portal 105", "direction": "entrance"}, + {"entrance": "Magic Dagger House Exit", "exit": "Shop Portal 106", "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Grave Path Lower", "exit": "Shop Portal 107", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Grave Path Upper", "exit": "Shop Portal 108", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Fortress Interior", "exit": "Shop Portal 109", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to East Fortress", "exit": "Shop Portal 110", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Beneath the Vault", "exit": "Shop Portal 111", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Forest Belltower", "exit": "Shop Portal 112", + "direction": "entrance"}, + {"entrance": "Fortress Courtyard to Overworld", "exit": "Shop Portal 113", "direction": "entrance"}, + {"entrance": "Fortress Courtyard Shop", "exit": "Shop Portal 114", "direction": "entrance"}, + {"entrance": "Beneath the Vault to Fortress Interior", "exit": "Shop Portal 115", + "direction": "entrance"}, + {"entrance": "Beneath the Vault to Fortress Courtyard", "exit": "Shop Portal 116", + "direction": "entrance"}, + {"entrance": "Fortress Interior Main Exit", "exit": "Shop Portal 117", "direction": "entrance"}, + {"entrance": "Fortress Interior to Beneath the Earth", "exit": "Shop Portal 118", + "direction": "entrance"}, + {"entrance": "Fortress Interior to Siege Engine Arena", "exit": "Shop Portal 119", + "direction": "entrance"}, + {"entrance": "Fortress Interior Shop", "exit": "Shop Portal 120", "direction": "entrance"}, + {"entrance": "Fortress Interior to East Fortress Upper", "exit": "Shop Portal 121", + "direction": "entrance"}, + {"entrance": "Fortress Interior to East Fortress Lower", "exit": "Shop Portal 122", + "direction": "entrance"}, + {"entrance": "East Fortress to Interior Lower", "exit": "Shop Portal 123", "direction": "entrance"}, + {"entrance": "East Fortress to Courtyard", "exit": "Shop Portal 124", "direction": "entrance"}, + {"entrance": "East Fortress to Interior Upper", "exit": "Shop Portal 125", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Lower Exit", "exit": "Shop Portal 126", "direction": "entrance"}, + {"entrance": "Fortress Hero's Grave", "exit": "Shop Portal 127", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Upper Exit", "exit": "Shop Portal 128", "direction": "entrance"}, + {"entrance": "Fortress Grave Path Dusty Entrance", "exit": "Shop Portal 129", + "direction": "entrance"}, + {"entrance": "Dusty Exit", "exit": "Shop Portal 130", "direction": "entrance"}, + {"entrance": "Siege Engine Arena to Fortress", "exit": "Shop Portal 131", "direction": "entrance"}, + {"entrance": "Fortress to Far Shore", "exit": "Shop Portal 132", "direction": "entrance"}, + {"entrance": "Atoll Upper Exit", "exit": "Shop Portal 133", "direction": "entrance"}, + {"entrance": "Atoll Lower Exit", "exit": "Shop Portal 134", "direction": "entrance"}, + {"entrance": "Atoll Shop", "exit": "Shop Portal 135", "direction": "entrance"}, + {"entrance": "Atoll to Far Shore", "exit": "Shop Portal 136", "direction": "entrance"}, + {"entrance": "Atoll Statue Teleporter", "exit": "Shop Portal 137", "direction": "entrance"}, + {"entrance": "Frog Stairs Eye Entrance", "exit": "Shop Portal 138", "direction": "entrance"}, + {"entrance": "Frog Stairs Mouth Entrance", "exit": "Shop Portal 139", "direction": "entrance"}, + {"entrance": "Frog Stairs Eye Exit", "exit": "Shop Portal 140", "direction": "entrance"}, + {"entrance": "Frog Stairs Mouth Exit", "exit": "Shop Portal 141", "direction": "entrance"}, + {"entrance": "Frog Stairs to Frog's Domain's Entrance", "exit": "Shop Portal 142", + "direction": "entrance"}, + {"entrance": "Frog Stairs to Frog's Domain's Exit", "exit": "Shop Portal 143", + "direction": "entrance"}, + {"entrance": "Frog's Domain Ladder Exit", "exit": "Shop Portal 144", "direction": "entrance"}, + {"entrance": "Frog's Domain Orb Exit", "exit": "Shop Portal 145", "direction": "entrance"}, + {"entrance": "Library Exterior Tree", "exit": "Shop Portal 146", "direction": "entrance"}, + {"entrance": "Library Exterior Ladder", "exit": "Shop Portal 147", "direction": "entrance"}, + {"entrance": "Library Hall Bookshelf Exit", "exit": "Shop Portal 148", "direction": "entrance"}, + {"entrance": "Library Hero's Grave", "exit": "Shop Portal 149", "direction": "entrance"}, + {"entrance": "Library Hall to Rotunda", "exit": "Shop Portal 150", "direction": "entrance"}, + {"entrance": "Library Rotunda Lower Exit", "exit": "Shop Portal 151", "direction": "entrance"}, + {"entrance": "Library Rotunda Upper Exit", "exit": "Shop Portal 152", "direction": "entrance"}, + {"entrance": "Library Lab to Rotunda", "exit": "Shop Portal 153", "direction": "entrance"}, + {"entrance": "Library to Far Shore", "exit": "Shop Portal 154", "direction": "entrance"}, + {"entrance": "Library Lab to Librarian Arena", "exit": "Shop Portal 155", "direction": "entrance"}, + {"entrance": "Librarian Arena Exit", "exit": "Shop Portal 156", "direction": "entrance"}, + {"entrance": "Stairs to Top of the Mountain", "exit": "Shop Portal 157", "direction": "entrance"}, + {"entrance": "Mountain to Quarry", "exit": "Shop Portal 158", "direction": "entrance"}, + {"entrance": "Mountain to Overworld", "exit": "Shop Portal 159", "direction": "entrance"}, + {"entrance": "Top of the Mountain Exit", "exit": "Shop Portal 160", "direction": "entrance"}, + {"entrance": "Quarry Connector to Overworld", "exit": "Shop Portal 161", "direction": "entrance"}, + {"entrance": "Quarry Connector to Quarry", "exit": "Shop Portal 162", "direction": "entrance"}, + {"entrance": "Quarry to Overworld Exit", "exit": "Shop Portal 163", "direction": "entrance"}, + {"entrance": "Quarry Shop", "exit": "Shop Portal 164", "direction": "entrance"}, + {"entrance": "Quarry to Monastery Front", "exit": "Shop Portal 165", "direction": "entrance"}, + {"entrance": "Quarry to Monastery Back", "exit": "Shop Portal 166", "direction": "entrance"}, + {"entrance": "Quarry to Mountain", "exit": "Shop Portal 167", "direction": "entrance"}, + {"entrance": "Quarry to Ziggurat", "exit": "Shop Portal 168", "direction": "entrance"}, + {"entrance": "Quarry to Far Shore", "exit": "Shop Portal 169", "direction": "entrance"}, + {"entrance": "Monastery Rear Exit", "exit": "Shop Portal 170", "direction": "entrance"}, + {"entrance": "Monastery Front Exit", "exit": "Shop Portal 171", "direction": "entrance"}, + {"entrance": "Monastery Hero's Grave", "exit": "Shop Portal 172", "direction": "entrance"}, + {"entrance": "Ziggurat Entry Hallway to Ziggurat Upper", "exit": "Shop Portal 173", + "direction": "entrance"}, + {"entrance": "Ziggurat Entry Hallway to Quarry", "exit": "Shop Portal 174", "direction": "entrance"}, + {"entrance": "Ziggurat Upper to Ziggurat Entry Hallway", "exit": "Shop Portal 175", + "direction": "entrance"}, + {"entrance": "Ziggurat Upper to Ziggurat Tower", "exit": "Shop Portal 176", "direction": "entrance"}, + {"entrance": "Ziggurat Tower to Ziggurat Upper", "exit": "Shop Portal 177", "direction": "entrance"}, + {"entrance": "Ziggurat Tower to Ziggurat Lower", "exit": "Shop Portal 178", "direction": "entrance"}, + {"entrance": "Ziggurat Lower to Ziggurat Tower", "exit": "Shop Portal 179", "direction": "entrance"}, + {"entrance": "Ziggurat Portal Room Entrance", "exit": "Shop Portal 180", "direction": "entrance"}, + {"entrance": "Ziggurat Portal Room Exit", "exit": "Shop Portal 181", "direction": "entrance"}, + {"entrance": "Ziggurat to Far Shore", "exit": "Shop Portal 182", "direction": "entrance"}, + {"entrance": "Swamp Lower Exit", "exit": "Shop Portal 183", "direction": "entrance"}, + {"entrance": "Swamp to Cathedral Main Entrance", "exit": "Shop Portal 184", "direction": "entrance"}, + {"entrance": "Swamp to Cathedral Secret Legend Room Entrance", "exit": "Shop Portal 185", + "direction": "entrance"}, + {"entrance": "Swamp to Gauntlet", "exit": "Shop Portal 186", "direction": "entrance"}, + {"entrance": "Swamp Shop", "exit": "Shop Portal 187", "direction": "entrance"}, + {"entrance": "Swamp Upper Exit", "exit": "Shop Portal 188", "direction": "entrance"}, + {"entrance": "Swamp Hero's Grave", "exit": "Shop Portal 189", "direction": "entrance"}, + {"entrance": "Cathedral Main Exit", "exit": "Shop Portal 190", "direction": "entrance"}, + {"entrance": "Cathedral Elevator", "exit": "Shop Portal 191", "direction": "entrance"}, + {"entrance": "Cathedral Secret Legend Room Exit", "exit": "Shop Portal 192", + "direction": "entrance"}, + {"entrance": "Gauntlet to Swamp", "exit": "Shop Portal 193", "direction": "entrance"}, + {"entrance": "Gauntlet Elevator", "exit": "Shop Portal 194", "direction": "entrance"}, + {"entrance": "Gauntlet Shop", "exit": "Shop Portal 195", "direction": "entrance"}, + {"entrance": "Hero's Grave to Fortress", "exit": "Shop Portal 196", "direction": "entrance"}, + {"entrance": "Hero's Grave to Monastery", "exit": "Shop Portal 197", "direction": "entrance"}, + {"entrance": "Hero's Grave to West Garden", "exit": "Shop Portal 198", "direction": "entrance"}, + {"entrance": "Hero's Grave to East Forest", "exit": "Shop Portal 199", "direction": "entrance"}, + {"entrance": "Hero's Grave to Library", "exit": "Shop Portal 200", "direction": "entrance"}, + {"entrance": "Hero's Grave to Swamp", "exit": "Shop Portal 201", "direction": "entrance"}, + {"entrance": "Far Shore to West Garden", "exit": "Shop Portal 202", "direction": "entrance"}, + {"entrance": "Far Shore to Library", "exit": "Shop Portal 203", "direction": "entrance"}, + {"entrance": "Far Shore to Quarry", "exit": "Shop Portal 204", "direction": "entrance"}, + {"entrance": "Far Shore to East Forest", "exit": "Shop Portal 205", "direction": "entrance"}, + {"entrance": "Far Shore to Fortress", "exit": "Shop Portal 206", "direction": "entrance"}, + {"entrance": "Far Shore to Atoll", "exit": "Shop Portal 207", "direction": "entrance"}, + {"entrance": "Far Shore to Ziggurat", "exit": "Shop Portal 208", "direction": "entrance"}, + {"entrance": "Far Shore to Heir", "exit": "Shop Portal 209", "direction": "entrance"}, + {"entrance": "Far Shore to Town", "exit": "Shop Portal 210", "direction": "entrance"}, + {"entrance": "Far Shore to Spawn", "exit": "Shop Portal 211", "direction": "entrance"}, + {"entrance": "Heir Arena Exit", "exit": "Shop Portal 212", "direction": "entrance"}, + {"entrance": "Purgatory Bottom Exit", "exit": "Shop Portal 213", "direction": "entrance"}, + {"entrance": "Purgatory Top Exit", "exit": "Shop Portal 214", "direction": "entrance"}, + {"entrance": "Shop Portal 215", "exit": "Shop Portal 216", "direction": "entrance"}, + {"entrance": "Shop Portal 217", "exit": "Shop Portal 218", "direction": "entrance"}, + {"entrance": "Shop Portal 219", "exit": "Shop Portal 220", "direction": "entrance"}, + {"entrance": "Shop Portal 221", "exit": "Shop Portal 222", "direction": "entrance"}, + {"entrance": "Shop Portal 223", "exit": "Shop Portal 224", "direction": "entrance"}, + {"entrance": "Shop Portal 225", "exit": "Shop Portal 226", "direction": "entrance"}, + {"entrance": "Shop Portal 227", "exit": "Shop Portal 228", "direction": "entrance"}, + {"entrance": "Shop Portal 229", "exit": "Shop Portal 230", "direction": "entrance"}, + ]} diff --git a/worlds/tunic/ut_stuff.py b/worlds/tunic/ut_stuff.py new file mode 100644 index 000000000000..2cf2f96a4ff2 --- /dev/null +++ b/worlds/tunic/ut_stuff.py @@ -0,0 +1,689 @@ +from typing import Any, TYPE_CHECKING + +from .options import EntranceLayout, LaurelsLocation + +if TYPE_CHECKING: + from . import TunicWorld + + +def setup_options_from_slot_data(world: "TunicWorld") -> None: + if hasattr(world.multiworld, "re_gen_passthrough"): + if "TUNIC" in world.multiworld.re_gen_passthrough: + world.using_ut = True + world.passthrough = world.multiworld.re_gen_passthrough["TUNIC"] + world.options.start_with_sword.value = world.passthrough["start_with_sword"] + world.options.keys_behind_bosses.value = world.passthrough["keys_behind_bosses"] + world.options.sword_progression.value = world.passthrough["sword_progression"] + world.options.ability_shuffling.value = world.passthrough["ability_shuffling"] + world.options.laurels_zips.value = world.passthrough["laurels_zips"] + world.options.ice_grappling.value = world.passthrough["ice_grappling"] + world.options.ladder_storage.value = world.passthrough["ladder_storage"] + world.options.ladder_storage_without_items = world.passthrough["ladder_storage_without_items"] + world.options.lanternless.value = world.passthrough["lanternless"] + world.options.maskless.value = world.passthrough["maskless"] + world.options.hexagon_quest.value = world.passthrough["hexagon_quest"] + world.options.hexagon_quest_ability_type.value = world.passthrough.get("hexagon_quest_ability_type", 0) + world.options.entrance_rando.value = world.passthrough["entrance_rando"] + world.options.shuffle_ladders.value = world.passthrough["shuffle_ladders"] + # world.options.shuffle_fuses.value = world.passthrough.get("shuffle_fuses", 0) + # world.options.shuffle_bells.value = world.passthrough.get("shuffle_bells", 0) + world.options.grass_randomizer.value = world.passthrough.get("grass_randomizer", 0) + world.options.breakable_shuffle.value = world.passthrough.get("breakable_shuffle", 0) + world.options.entrance_layout.value = EntranceLayout.option_standard + if ("ziggurat2020_3, ziggurat2020_1_zig2_skip" in world.passthrough["Entrance Rando"].keys() + or "ziggurat2020_3, ziggurat2020_1_zig2_skip" in world.passthrough["Entrance Rando"].values()): + world.options.entrance_layout.value = EntranceLayout.option_fixed_shop + world.options.decoupled = world.passthrough.get("decoupled", 0) + world.options.laurels_location.value = LaurelsLocation.option_anywhere + world.options.combat_logic.value = world.passthrough.get("combat_logic", 0) + else: + world.using_ut = False + else: + world.using_ut = False + + +# for UT poptracker integration map tab switching +def map_page_index(data: Any) -> int: + mapping: dict[str, int] = { + "Beneath the Earth": 1, + "Beneath the Well": 2, + "The Cathedral": 3, + "Dark Tomb": 4, + "Eastern Vault": 5, + "Frog's Domain": 6, + "Swamp": 7, + "Overworld": 8, + "The Quarry": 9, + "Ruined Atoll": 10, + "West Gardens": 11, + "The Grand Library": 12, + "East Forest": 13, + "The Far Shore": 14, + "The Rooted Ziggurat": 15, + } + return mapping.get(data, 0) + + +# mapping of everything after the second to last slash and the location id +# lua used for the name: string.match(full_name, "[^/]*/[^/]*$") +poptracker_data: dict[str, int] = { + "Library Lab Chest by Shrine 1/Chest": 509342493, + "Library Lab Chest by Shrine 3/Chest": 509342494, + "Library Lab by Fuse/Behind Chalkboard": 509342495, + "Library Lab Page 3/Page": 509342496, + "Library Lab Page 1/Page": 509342497, + "Library Lab Page 2/Page": 509342498, + "Hero's Grave/Mushroom Relic": 509342499, + "Mountain Door/Lower Mountain - Page Before Door": 509342500, + "Changing Room/Normal Chest": 509342501, + "Fortress Courtyard - Chest Near Cave/Next to the Obelisk": 509342502, + "Fortress Courtyard - Near Fuse/Pray": 509342503, + "Fortress Courtyard - Below Walkway/Under the Stairs": 509342504, + "Fortress Courtyard - Page Near Cave/Heir-To-The-Heir": 509342505, + "West Furnace/Lantern Pickup": 509342506, + "Maze Cave/Maze Room Chest": 509342507, + "Inside the Old House/Normal Chest": 509342508, + "Inside the Old House/Shield Pickup": 509342509, + "[West] Obscured Behind Windmill/Behind the Trees": 509342510, + "[South] Beach Chest/Beside the Bridge": 509342511, + "[West] Obscured Near Well/Hidden by Trees": 509342512, + "[Central] Bombable Wall/Let the flowers guide you": 509342513, + "[Northwest] Chest Near Turret/Mind the Autobolt...": 509342514, + "[East] Chest Near Pots/Chest": 509342515, + "[Northwest] Chest Near Golden Obelisk/Underneath the Staff": 509342516, + "[Southwest] South Chest Near Guard/End of the Bridge": 509342517, + "[Southwest] West Beach Guarded By Turret/Chest": 509342518, + "[Southwest] Chest Guarded By Turret/Behind the Trees": 509342519, + "[Northwest] Shadowy Corner Chest/Dark Ramps Chest": 509342520, + "[Southwest] Obscured In Tunnel To Beach/Deep in the Wall": 509342521, + "[Southwest] Grapple Chest Over Walkway/Jeffry": 509342522, + "[Northwest] Chest Beneath Quarry Gate/Across the Bridge": 509342523, + "[Southeast] Chest Near Swamp/Under the Bridge": 509342524, + "[Southwest] From West Garden/Dash Across": 509342525, + "[East] Grapple Chest/Grapple Across": 509342526, + "[Southwest] West Beach Guarded By Turret 2/Get Across": 509342527, + "Sand Hook/[Southwest] Beach Chest Near Flowers": 509342528, + "[Southwest] Bombable Wall Near Fountain/Let the flowers guide you": 509342529, + "[West] Chest After Bell/Post-Dong!": 509342530, + "[Southwest] Tunnel Guarded By Turret/Below Jeffry": 509342531, + "[East] Between ladders near Ruined Passage/Chest": 509342532, + "[Northeast] Chest Above Patrol Cave/Behind Blue Rudelings": 509342533, + "[Southwest] Beach Chest Beneath Guard/Under Bridge": 509342534, + "[Central] Chest Across From Well/Across the Bridge": 509342535, + "[Northwest] Chest Near Quarry Gate/Rudeling Camp": 509342536, + "[East] Chest In Trees/Above Locked House": 509342537, + "[West] Chest Behind Moss Wall/Around the Corner": 509342538, + "[South] Beach Page/Page": 509342539, + "[Southeast] Page on Pillar by Swamp/Dash Across": 509342540, + "[Southwest] Key Pickup/Old House Key": 509342541, + "[West] Key Pickup/Hero's Path Key": 509342542, + "[East] Page Near Secret Shop/Page": 509342543, + "Fountain/[Southwest] Fountain Page": 509342544, + "[Northwest] Page on Pillar by Dark Tomb/A Terrible Power Rises": 509342545, + "Magic Staff/[Northwest] Fire Wand Pickup": 509342546, + "[West] Page on Teleporter/Treasures and Tools": 509342547, + "[Northwest] Page By Well/If you seek to increase your power...": 509342548, + "Patrol Cave/Normal Chest": 509342549, + "Ruined Shop/Chest 1": 509342550, + "Ruined Shop/Chest 2": 509342551, + "Ruined Shop/Chest 3": 509342552, + "Ruined Passage/Page Pickup": 509342553, + "Shop/Potion 1": 509342554, + "Shop/Potion 2": 509342555, + "Shop/Coin 1": 509342556, + "Shop/Coin 2": 509342557, + "Special Shop/Secret Page Pickup": 509342558, + "Stick House/Stick Chest": 509342559, + "Sealed Temple/Page Pickup": 509342560, + "Inside Hourglass Cave/Hourglass Chest": 509342561, + "Secret Chest/Dash Across": 509342562, + "Page Pickup/A Long, Long Time Ago...": 509342563, + "Coins in the Well/10 Coins": 509342564, + "Coins in the Well/15 Coins": 509342565, + "Coins in the Well/3 Coins": 509342566, + "Coins in the Well/6 Coins": 509342567, + "Secret Gathering Place/20 Fairy Reward": 509342568, + "Secret Gathering Place/10 Fairy Reward": 509342569, + "[West] Moss Wall Holy Cross/Use the Holy Cross": 509342570, + "[Southwest] Flowers Holy Cross/Use the Holy Cross": 509342571, + "Fountain/[Southwest] Fountain Holy Cross": 509342572, + "[Northeast] Flowers Holy Cross/Use the Holy Cross": 509342573, + "[East] Weathervane Holy Cross/Use the Holy Cross": 509342574, + "[West] Windmill Holy Cross/Sacred Geometry": 509342575, + "Sand Hook/[Southwest] Haiku Holy Cross": 509342576, + "[West] Windchimes Holy Cross/Power Up!": 509342577, + "[South] Starting Platform Holy Cross/Back to Work": 509342578, + "Magic Staff/[Northwest] Golden Obelisk Page": 509342579, + "Inside the Old House/Holy Cross Door Page": 509342580, + "Cube Cave/Holy Cross Chest": 509342581, + "Southeast Cross Door/Chest 3": 509342582, + "Southeast Cross Door/Chest 2": 509342583, + "Southeast Cross Door/Chest 1": 509342584, + "Maze Cave/Maze Room Holy Cross": 509342585, + "Caustic Light Cave/Holy Cross Chest": 509342586, + "Inside the Old House/Holy Cross Chest": 509342587, + "Patrol Cave/Holy Cross Chest": 509342588, + "Ruined Passage/Holy Cross Chest": 509342589, + "Inside Hourglass Cave/Holy Cross Chest": 509342590, + "Sealed Temple/Holy Cross Chest": 509342591, + "Fountain Cross Door/Page Pickup": 509342592, + "Secret Gathering Place/Holy Cross Chest": 509342593, + "Mountain Door/Top of the Mountain - Page At The Peak": 509342594, + "Monastery/Monastery Chest": 509342595, + "[Back Entrance] Bushes Holy Cross/Use the Holy Cross": 509342596, + "[Back Entrance] Chest/Peaceful Chest": 509342597, + "[Central] Near Shortcut Ladder/By the Boxes": 509342598, + "[East] Near Telescope/Spoopy": 509342599, + "[East] Upper Floor/Reminds me of Blighttown": 509342600, + "[Central] Below Entry Walkway/Even more Stairs!": 509342601, + "[East] Obscured Near Winding Staircase/At the Bottom": 509342602, + "[East] Obscured Beneath Scaffolding/In the Miasma Mound": 509342603, + "[East] Obscured Near Telescope/Weird path?": 509342604, + "[Back Entrance] Obscured Behind Wall/Happy Water!": 509342605, + "[Central] Obscured Below Entry Walkway/Down the Stairs": 509342606, + "[Central] Top Floor Overhang/End of the ruined bridge": 509342607, + "[East] Near Bridge/Drop that Bridge!": 509342608, + "[Central] Above Ladder/Climb Ladder": 509342609, + "[Central] Obscured Behind Staircase/At the Bottom": 509342610, + "[Central] Above Ladder Dash Chest/Dash Across": 509342611, + "[West] Upper Area Bombable Wall/Boomy": 509342612, + "[East] Bombable Wall/Flowers Guide Thee": 509342613, + "Monastery/Hero's Grave - Ash Relic": 509342614, + "[West] Shooting Range Secret Path/Obscured Path": 509342615, + "[West] Near Shooting Range/End of bridge": 509342616, + "[West] Below Shooting Range/Clever little sneak!": 509342617, + "[Lowlands] Below Broken Ladder/Miasma Pits": 509342618, + "[West] Upper Area Near Waterfall/Yummy Polygons": 509342619, + "[Lowlands] Upper Walkway/Hate them Snipers": 509342620, + "[West] Lower Area Below Bridge/Go Around": 509342621, + "[West] Lower Area Isolated Chest/Burn Pots": 509342622, + "[Lowlands] Near Elevator/End of the Tracks": 509342623, + "[West] Lower Area After Bridge/Drop that Bridge!": 509342624, + "Upper - Near Bridge Switch/You can shoot it": 509342625, + "Upper - Beneath Bridge To Administrator/End of the First Floor": 509342626, + "Tower - Inside Tower/I'm Scared": 509342627, + "Lower - Near Corpses/They are Dead": 509342628, + "Lower - Spider Ambush/Use the Gun": 509342629, + "Lower - Left Of Checkpoint Before Fuse/Moment of Reprieve": 509342630, + "Lower - After Guarded Fuse/Defeat those Mechs": 509342631, + "Lower - Guarded By Double Turrets/Help": 509342632, + "Lower - After 2nd Double Turret Chest/Haircut Time!": 509342633, + "Lower - Guarded By Double Turrets 2/Oh god they're everywhere": 509342634, + "Lower - Hexagon Blue/Scavenger Queen": 509342635, + "[West] Near Kevin Block/Phonomath": 509342636, + "[South] Upper Floor On Power Line/Hidden Ladder Chest": 509342637, + "[South] Chest Near Big Crabs/His Name is Tom": 509342638, + "[North] Guarded By Bird/Skraw!": 509342639, + "[Northeast] Chest Beneath Brick Walkway/Mind the Crabbits": 509342640, + "[Northwest] Bombable Wall/Flowers Guide Thee": 509342641, + "[North] Obscured Beneath Bridge/In the shallow water": 509342642, + "[South] Upper Floor On Bricks/Up the Ladder": 509342643, + "[South] Near Birds/Danlarry and Thranmire ate Jerry!": 509342644, + "[Northwest] Behind Envoy/Mind the Fairies": 509342645, + "[Southwest] Obscured Behind Fuse/Saved by the Prayer": 509342646, + "Locked Brick House/[East] Locked Room Upper Chest": 509342647, + "[North] From Lower Overworld Entrance/Come from the Overworld": 509342648, + "Locked Brick House/[East] Locked Room Lower Chest": 509342649, + "[Northeast] Chest On Brick Walkway/Near Domain": 509342650, + "[Southeast] Chest Near Fuse/Around the Tower": 509342651, + "[Northeast] Key Pickup/Around the Hill": 509342652, + "Cathedral Gauntlet/Gauntlet Reward": 509342653, + "Secret Legend Trophy Chest/You can use the Holy Cross from the outside": 509342654, + "[Upper Graveyard] Obscured Behind Hill/Between Two Hills": 509342655, + "[South Graveyard] 4 Orange Skulls/DJ Khaled - Let's go Golfing!": 509342656, + "[Central] Near Ramps Up/Up them Ramps": 509342657, + "[Upper Graveyard] Near Shield Fleemers/Alternatively, Before the Cathedral": 509342658, + "[South Graveyard] Obscured Behind Ridge/Hidden passage by ladder": 509342659, + "[South Graveyard] Obscured Beneath Telescope/Through the Nook": 509342660, + "[Entrance] Above Entryway/Dash Across": 509342661, + "[Central] South Secret Passage/Wall Man Approves these Vibes": 509342662, + "[South Graveyard] Upper Walkway On Pedestal/Gazing out over the Graves": 509342663, + "[South Graveyard] Guarded By Tentacles/Isolated Island": 509342664, + "[Upper Graveyard] Near Telescope/Overlooking the Graves": 509342665, + "[Outside Cathedral] Near Moonlight Bridge Door/Down the Hidden Ladder": 509342666, + "[Entrance] Obscured Inside Watchtower/Go Inside": 509342667, + "[Entrance] South Near Fence/DAGGER STRAP!!!!!": 509342668, + "[South Graveyard] Guarded By Big Skeleton/Super Clipping": 509342669, + "[South Graveyard] Chest Near Graves/The Rest of Our Entire Life is Death": 509342670, + "[Entrance] North Small Island/Mildly Hidden": 509342671, + "First Hero's Grave/[Outside Cathedral] Obscured Behind Memorial": 509342672, + "[Central] Obscured Behind Northern Mountain/Hug the Wall": 509342673, + "[South Graveyard] Upper Walkway Dash Chest/Around the Hill": 509342674, + "[South Graveyard] Above Big Skeleton/End of Ledge": 509342675, + "[Central] Beneath Memorial/Do You Even Live?": 509342676, + "First Hero's Grave/Hero's Grave - Feathers Relic": 509342677, + "West Furnace/Chest": 509342678, + "[West] Near Gardens Entrance/Effigy Skip": 509342679, + "[Central Highlands] Holy Cross (Blue Lines)/Use the Holy Cross": 509342680, + "[West Lowlands] Tree Holy Cross Chest/Use the Holy Cross": 509342681, + "[Southeast Lowlands] Outside Cave/Mind the Chompignoms!": 509342682, + "[Central Lowlands] Chest Beneath Faeries/As you walk by": 509342683, + "[North] Behind Holy Cross Door/Extra Sword!": 509342684, + "[Central Highlands] Top of Ladder Before Boss/Try to be This Strong": 509342685, + "[Central Lowlands] Passage Beneath Bridge/Take the lower path": 509342686, + "[North] Across From Page Pickup/I Love Fish!": 509342687, + "[Central Lowlands] Below Left Walkway/Dash Across": 509342688, + "[West] In Flooded Walkway/Dash through the water": 509342689, + "[West] Past Flooded Walkway/Through the Shallow Water": 509342690, + "[North] Obscured Beneath Hero's Memorial/Take the Long Way Around": 509342691, + "[Central Lowlands] Chest Near Shortcut Bridge/Between a Rope and a Bridge Place": 509342692, + "[West Highlands] Upper Left Walkway/By the Rudeling": 509342693, + "[Central Lowlands] Chest Beneath Save Point/Behind the Way": 509342694, + "[Central Highlands] Behind Guard Captain/Under Boss Ladder": 509342695, + "[Central Highlands] After Garden Knight/Did Not Kill You": 509342696, + "[South Highlands] Secret Chest Beneath Fuse/Pray to the Wall Man": 509342697, + "[East Lowlands] Page Behind Ice Dagger House/Come from the Far Shore": 509342698, + "[North] Page Pickup/Survival Tips": 509342699, + "[Southeast Lowlands] Ice Dagger Pickup/Ice Dagger Cave": 509342700, + "Hero's Grave/Effigy Relic": 509342701, + "[East] Bombable Wall/Break Bombable Wall": 509350705, + "[West] Upper Area Bombable Wall/Break Bombable Wall": 509350704, + "[East Wing] Bombable Wall/Break Bombable Wall": 509350703, + "Bombable Wall/Break Bombable Wall": 509350702, + "[Northwest] Bombable Wall/Break Bombable Wall": 509350701, + "[Southwest] Bombable Wall Near Fountain/Break Bombable Wall": 509350700, + "Cube Cave/Break Bombable Wall": 509350699, + "[Central] Bombable Wall/Break Bombable Wall": 509350698, + "Purgatory Pots/Pot 33": 509350697, + "Purgatory Pots/Pot 32": 509350696, + "Purgatory Pots/Pot 31": 509350695, + "Purgatory Pots/Pot 30": 509350694, + "Purgatory Pots/Pot 29": 509350693, + "Purgatory Pots/Pot 28": 509350692, + "Purgatory Pots/Pot 27": 509350691, + "Purgatory Pots/Pot 26": 509350690, + "Purgatory Pots/Pot 25": 509350689, + "Purgatory Pots/Pot 24": 509350688, + "Purgatory Pots/Pot 23": 509350687, + "Purgatory Pots/Pot 22": 509350686, + "Purgatory Pots/Pot 21": 509350685, + "Purgatory Pots/Pot 20": 509350684, + "Purgatory Pots/Pot 19": 509350683, + "Purgatory Pots/Pot 18": 509350682, + "Purgatory Pots/Pot 17": 509350681, + "Purgatory Pots/Pot 16": 509350680, + "Purgatory Pots/Pot 15": 509350679, + "Purgatory Pots/Pot 14": 509350678, + "Purgatory Pots/Pot 13": 509350677, + "Purgatory Pots/Pot 12": 509350676, + "Purgatory Pots/Pot 11": 509350675, + "Purgatory Pots/Pot 10": 509350674, + "Purgatory Pots/Pot 9": 509350673, + "Purgatory Pots/Pot 8": 509350672, + "Purgatory Pots/Pot 7": 509350671, + "Purgatory Pots/Pot 6": 509350670, + "Purgatory Pots/Pot 5": 509350669, + "Purgatory Pots/Pot 4": 509350668, + "Purgatory Pots/Pot 3": 509350667, + "Purgatory Pots/Pot 2": 509350666, + "Purgatory Pots/Pot 1": 509350665, + "[1F] Pots by Stairs/Pot 2": 509350664, + "[1F] Pots by Stairs/Pot 1": 509350663, + "Crates/Crate 9": 509350662, + "Crates/Crate 8": 509350661, + "Crates/Crate 7": 509350660, + "Crates/Crate 6": 509350659, + "Crates/Crate 5": 509350658, + "Crates/Crate 4": 509350657, + "Crates/Crate 3": 509350656, + "Crates/Crate 2": 509350655, + "Crates/Crate 1": 509350654, + "[Lowlands] Crates/Crate 2": 509350653, + "[Lowlands] Crates/Crate 1": 509350652, + "[West] Near Isolated Chest/Crate 5": 509350651, + "[West] Near Isolated Chest/Crate 4": 509350650, + "[West] Near Isolated Chest/Crate 3": 509350649, + "[West] Near Isolated Chest/Crate 2": 509350648, + "[West] Near Isolated Chest/Crate 1": 509350647, + "[West] Crates by Shooting Range/Crate 5": 509350646, + "[West] Crates by Shooting Range/Crate 4": 509350645, + "[West] Crates by Shooting Range/Crate 3": 509350644, + "[West] Crates by Shooting Range/Crate 2": 509350643, + "[West] Crates by Shooting Range/Crate 1": 509350642, + "[West] Near Isolated Chest/Explosive Pot 2": 509350641, + "[West] Near Isolated Chest/Explosive Pot 1": 509350640, + "[West] Explosive Pot above Shooting Range/Explosive Pot": 509350639, + "[West] Explosive Pots near Bombable Wall/Explosive Pot 2": 509350638, + "[West] Explosive Pots near Bombable Wall/Explosive Pot 1": 509350637, + "[Central] Crates near Shortcut Ladder/Crate 5": 509350636, + "[Central] Crates near Shortcut Ladder/Crate 4": 509350635, + "[Central] Crates near Shortcut Ladder/Crate 3": 509350634, + "[Central] Crates near Shortcut Ladder/Crate 2": 509350633, + "[Central] Crates near Shortcut Ladder/Crate 1": 509350632, + "[Central] Explosive Pots near Shortcut Ladder/Explosive Pot 2": 509350631, + "[Central] Explosive Pots near Shortcut Ladder/Explosive Pot 1": 509350630, + "[Back Entrance] Pots/Pot 5": 509350629, + "[Back Entrance] Pots/Pot 4": 509350628, + "[Back Entrance] Pots/Pot 3": 509350627, + "[Back Entrance] Pots/Pot 2": 509350626, + "[Back Entrance] Pots/Pot 1": 509350625, + "[Central] Explosive Pots near Monastery/Explosive Pot 2": 509350624, + "[Central] Explosive Pots near Monastery/Explosive Pot 1": 509350623, + "[East] Explosive Pot beneath Scaffolding/Explosive Pot": 509350622, + "[East] Explosive Pots/Explosive Pot 3": 509350621, + "[East] Explosive Pots/Explosive Pot 2": 509350620, + "[East] Explosive Pots/Explosive Pot 1": 509350619, + "Display Cases/Display Case 3": 509350618, + "Display Cases/Display Case 2": 509350617, + "Display Cases/Display Case 1": 509350616, + "Orb Room Explosive Pots/Explosive Pot 2": 509350615, + "Orb Room Explosive Pots/Explosive Pot 1": 509350614, + "Pots after Gate/Pot 2": 509350613, + "Pots after Gate/Pot 1": 509350612, + "Slorm Room/Pot": 509350611, + "Main Room Pots/Pot 2": 509350610, + "Main Room Pots/Pot 1": 509350609, + "Side Room Pots/Pot 3": 509350608, + "Side Room Pots/Pot 2": 509350607, + "Side Room Pots/Pot 1": 509350606, + "Pots above Orb Altar/Pot 2": 509350605, + "Pots above Orb Altar/Pot 1": 509350604, + "[Upper] Pots/Pot 6": 509350603, + "[Upper] Pots/Pot 5": 509350602, + "[Upper] Pots/Pot 4": 509350601, + "[Upper] Pots/Pot 3": 509350600, + "[Upper] Pots/Pot 2": 509350599, + "[Upper] Pots/Pot 1": 509350598, + "[South] Explosive Pot near Birds/Explosive Pot": 509350597, + "[West] Broken House/Table": 509350596, + "[West] Broken House/Pot 2": 509350595, + "[West] Broken House/Pot 1": 509350594, + "Fortress Arena/Pot 2": 509350593, + "Fortress Arena/Pot 1": 509350592, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 4": 509350591, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 3": 509350590, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 2": 509350589, + "Fortress Leaf Piles - Secret Chest/Leaf Pile 1": 509350588, + "Barrels/Back Room Barrel 7": 509350587, + "Barrels/Back Room Barrel 6": 509350586, + "Barrels/Back Room Barrel 5": 509350585, + "[Northwest] Sign by Quarry Gate/Sign": 509350400, + "[Central] Sign South of Checkpoint/Sign": 509350401, + "[Central] Sign by Ruined Passage/Sign": 509350402, + "[East] Pots near Slimes/Pot 1": 509350403, + "[East] Pots near Slimes/Pot 2": 509350404, + "[East] Pots near Slimes/Pot 3": 509350405, + "[East] Pots near Slimes/Pot 4": 509350406, + "[East] Pots near Slimes/Pot 5": 509350407, + "[East] Forest Sign/Sign": 509350408, + "[East] Fortress Sign/Sign": 509350409, + "[North] Pots/Pot 1": 509350410, + "[North] Pots/Pot 2": 509350411, + "[North] Pots/Pot 3": 509350412, + "[North] Pots/Pot 4": 509350413, + "[West] Sign Near West Garden Entrance/Sign": 509350414, + "Stick House/Pot 1": 509350415, + "Stick House/Pot 2": 509350416, + "Stick House/Pot 3": 509350417, + "Stick House/Pot 4": 509350418, + "Stick House/Pot 5": 509350419, + "Stick House/Pot 6": 509350420, + "Stick House/Pot 7": 509350421, + "Ruined Shop/Pot 1": 509350422, + "Ruined Shop/Pot 2": 509350423, + "Ruined Shop/Pot 3": 509350424, + "Ruined Shop/Pot 4": 509350425, + "Ruined Shop/Pot 5": 509350426, + "Inside Hourglass Cave/Sign": 509350427, + "Pots by Slimes/Pot 1": 509350428, + "Pots by Slimes/Pot 2": 509350429, + "Pots by Slimes/Pot 3": 509350430, + "Pots by Slimes/Pot 4": 509350431, + "Pots by Slimes/Pot 5": 509350432, + "Pots by Slimes/Pot 6": 509350433, + "[Upper] Barrels/Barrel 1": 509350434, + "[Upper] Barrels/Barrel 2": 509350435, + "[Upper] Barrels/Barrel 3": 509350436, + "Pots after Guard Captain/Pot 1": 509350437, + "Pots after Guard Captain/Pot 2": 509350438, + "Pots after Guard Captain/Pot 3": 509350439, + "Pots after Guard Captain/Pot 4": 509350440, + "Pots after Guard Captain/Pot 5": 509350441, + "Pots after Guard Captain/Pot 6": 509350442, + "Pots after Guard Captain/Pot 7": 509350443, + "Pots after Guard Captain/Pot 8": 509350444, + "Pots after Guard Captain/Pot 9": 509350445, + "Pots/Pot 1": 509350446, + "Pots/Pot 2": 509350447, + "Pots/Pot 3": 509350448, + "Pots/Pot 4": 509350449, + "Pots/Pot 5": 509350450, + "Sign by Grave Path/Sign": 509350451, + "Sign by Guardhouse 1/Sign": 509350452, + "Pots by Grave Path/Pot 1": 509350453, + "Pots by Grave Path/Pot 2": 509350454, + "Pots by Grave Path/Pot 3": 509350455, + "Pots by Envoy/Pot 1": 509350456, + "Pots by Envoy/Pot 2": 509350457, + "Pots by Envoy/Pot 3": 509350458, + "Bottom Floor Pots/Pot 1": 509350459, + "Bottom Floor Pots/Pot 2": 509350460, + "Bottom Floor Pots/Pot 3": 509350461, + "Bottom Floor Pots/Pot 4": 509350462, + "Bottom Floor Pots/Pot 5": 509350463, + "[Side Room] Pots by Chest/Pot 1": 509350464, + "[Side Room] Pots by Chest/Pot 2": 509350465, + "[Side Room] Pots by Chest/Pot 3": 509350466, + "[Third Room] Barrels by Bridge/Barrel 1": 509350467, + "[Third Room] Barrels by Bridge/Barrel 2": 509350468, + "[Third Room] Barrels by Bridge/Barrel 3": 509350469, + "[Third Room] Barrels after Back Corridor/Barrel 1": 509350470, + "[Third Room] Barrels after Back Corridor/Barrel 2": 509350471, + "[Third Room] Barrels after Back Corridor/Barrel 3": 509350472, + "[Third Room] Barrels after Back Corridor/Barrel 4": 509350473, + "[Third Room] Barrels after Back Corridor/Barrel 5": 509350474, + "[Third Room] Barrels by West Turret/Barrel 1": 509350475, + "[Third Room] Barrels by West Turret/Barrel 2": 509350476, + "[Third Room] Barrels by West Turret/Barrel 3": 509350477, + "[Third Room] Pots by East Turret/Pot 1": 509350478, + "[Third Room] Pots by East Turret/Pot 2": 509350479, + "[Third Room] Pots by East Turret/Pot 3": 509350480, + "[Third Room] Pots by East Turret/Pot 4": 509350481, + "[Third Room] Pots by East Turret/Pot 5": 509350482, + "[Third Room] Pots by East Turret/Pot 6": 509350483, + "[Third Room] Pots by East Turret/Pot 7": 509350484, + "Barrels/Barrel 1": 509350485, + "Barrels/Barrel 2": 509350486, + "Pot Hallway Pots/Pot 1": 509350487, + "Pot Hallway Pots/Pot 2": 509350488, + "Pot Hallway Pots/Pot 3": 509350489, + "Pot Hallway Pots/Pot 4": 509350490, + "Pot Hallway Pots/Pot 5": 509350491, + "Pot Hallway Pots/Pot 6": 509350492, + "Pot Hallway Pots/Pot 7": 509350493, + "Pot Hallway Pots/Pot 8": 509350494, + "Pot Hallway Pots/Pot 9": 509350495, + "Pot Hallway Pots/Pot 10": 509350496, + "Pot Hallway Pots/Pot 11": 509350497, + "Pot Hallway Pots/Pot 12": 509350498, + "Pot Hallway Pots/Pot 13": 509350499, + "Pot Hallway Pots/Pot 14": 509350500, + "2nd Laser Room Pots/Pot 1": 509350501, + "2nd Laser Room Pots/Pot 2": 509350502, + "2nd Laser Room Pots/Pot 3": 509350503, + "2nd Laser Room Pots/Pot 4": 509350504, + "2nd Laser Room Pots/Pot 5": 509350505, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 1": 509350506, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 2": 509350507, + "[Southeast Lowlands] Ice Dagger Pickup/Pot 3": 509350508, + "Fire Pots/Fire Pot 1": 509350509, + "Fire Pots/Fire Pot 2": 509350510, + "Fire Pots/Fire Pot 3": 509350511, + "Fire Pots/Fire Pot 4": 509350512, + "Fire Pots/Fire Pot 5": 509350513, + "Fire Pots/Fire Pot 6": 509350514, + "Fire Pots/Fire Pot 7": 509350515, + "Fire Pots/Fire Pot 8": 509350516, + "Upper Fire Pot/Fire Pot": 509350517, + "[Entry] Pots/Pot 1": 509350518, + "[Entry] Pots/Pot 2": 509350519, + "[By Grave] Pots/Pot 1": 509350520, + "[By Grave] Pots/Pot 2": 509350521, + "[By Grave] Pots/Pot 3": 509350522, + "[By Grave] Pots/Pot 4": 509350523, + "[By Grave] Pots/Pot 5": 509350524, + "[By Grave] Pots/Pot 6": 509350525, + "[Central] Fire Pots/Fire Pot 1": 509350526, + "[Central] Fire Pots/Fire Pot 2": 509350527, + "[Central] Pots by Door/Pot 1": 509350528, + "[Central] Pots by Door/Pot 2": 509350529, + "[Central] Pots by Door/Pot 3": 509350530, + "[Central] Pots by Door/Pot 4": 509350531, + "[Central] Pots by Door/Pot 5": 509350532, + "[Central] Pots by Door/Pot 6": 509350533, + "[Central] Pots by Door/Pot 7": 509350534, + "[Central] Pots by Door/Pot 8": 509350535, + "[Central] Pots by Door/Pot 9": 509350536, + "[Central] Pots by Door/Pot 10": 509350537, + "[Central] Pots by Door/Pot 11": 509350538, + "[East Wing] Pots by Broken Checkpoint/Pot 1": 509350539, + "[East Wing] Pots by Broken Checkpoint/Pot 2": 509350540, + "[East Wing] Pots by Broken Checkpoint/Pot 3": 509350541, + "[West Wing] Pots by Checkpoint/Pot 1": 509350542, + "[West Wing] Pots by Checkpoint/Pot 2": 509350543, + "[West Wing] Pots by Checkpoint/Pot 3": 509350544, + "[West Wing] Pots by Overlook/Pot 1": 509350545, + "[West Wing] Pots by Overlook/Pot 2": 509350546, + "[West Wing] Slorm Room Pots/Pot 1": 509350547, + "[West Wing] Slorm Room Pots/Pot 2": 509350548, + "[West Wing] Slorm Room Pots/Pot 3": 509350549, + "[West Wing] Chest Room Pots/Pot 1": 509350550, + "[West Wing] Chest Room Pots/Pot 2": 509350551, + "[West Wing] Pots by Stairs to Basement/Pot 1": 509350552, + "[West Wing] Pots by Stairs to Basement/Pot 2": 509350553, + "[West Wing] Pots by Stairs to Basement/Pot 3": 509350554, + "Entry Spot/Pot 1": 509350555, + "Entry Spot/Pot 2": 509350556, + "Entry Spot/Crate 1": 509350557, + "Entry Spot/Crate 2": 509350558, + "Entry Spot/Crate 3": 509350559, + "Entry Spot/Crate 4": 509350560, + "Entry Spot/Crate 5": 509350561, + "Entry Spot/Crate 6": 509350562, + "Entry Spot/Crate 7": 509350563, + "Slorm Room Crates/Crate 1": 509350564, + "Slorm Room Crates/Crate 2": 509350565, + "Crates under Rope/Crate 1": 509350566, + "Crates under Rope/Crate 2": 509350567, + "Crates under Rope/Crate 3": 509350568, + "Crates under Rope/Crate 4": 509350569, + "Crates under Rope/Crate 5": 509350570, + "Crates under Rope/Crate 6": 509350571, + "Fuse Room Fire Pots/Fire Pot 1": 509350572, + "Fuse Room Fire Pots/Fire Pot 2": 509350573, + "Fuse Room Fire Pots/Fire Pot 3": 509350574, + "Barrels/Barrel by Back Room 1": 509350575, + "Barrels/Barrel by Back Room 2": 509350576, + "Barrels/Barrel by Back Room 3": 509350577, + "Barrels/Barrel by Back Room 4": 509350578, + "Barrels/Barrel by Back Room 5": 509350579, + "Barrels/Barrel by Back Room 6": 509350580, + "Barrels/Back Room Barrel 1": 509350581, + "Barrels/Back Room Barrel 2": 509350582, + "Barrels/Back Room Barrel 3": 509350583, + "[Powered Secret Room] Chest/Follow the Purple Energy Road": 509342400, + "[Entryway] Chest/Mind the Slorms": 509342401, + "[Third Room] Beneath Platform Chest/Run from the tentacles!": 509342402, + "[Third Room] Tentacle Chest/Water Sucks": 509342403, + "[Entryway] Obscured Behind Waterfall/You can just go in there": 509342404, + "[Save Room] Upper Floor Chest 1/Through the Power of Prayer": 509342405, + "[Save Room] Upper Floor Chest 2/Above the Fox Shrine": 509342406, + "[Second Room] Underwater Chest/Hidden Passage": 509342407, + "[Back Corridor] Right Secret/Hidden Path": 509342408, + "[Back Corridor] Left Secret/Behind the Slorms": 509342409, + "[Second Room] Obscured Behind Waterfall/Just go in there": 509342410, + "[Side Room] Chest By Pots/Just Climb up There": 509342411, + "[Side Room] Chest By Phrends/So Many Phrends!": 509342412, + "[Second Room] Page/Ruined Atoll Map": 509342413, + "[Passage To Dark Tomb] Page Pickup/Siege Engine": 509342414, + "[1F] Guarded By Lasers/Beside 3 Miasma Seekers": 509342415, + "[1F] Near Spikes/Mind the Miasma Seeker": 509342416, + "Birdcage Room/[2F] Bird Room": 509342417, + "[2F] Entryway Upper Walkway/Overlooking Miasma": 509342418, + "[1F] Library/By the Books": 509342419, + "[2F] Library/Behind the Ladder": 509342420, + "[2F] Guarded By Lasers/Before the big reveal...": 509342421, + "Birdcage Room/[2F] Bird Room Secret": 509342422, + "[1F] Library Secret/Pray to the Wallman": 509342423, + "Spike Maze Near Exit/Watch out!": 509342424, + "2nd Laser Room/Can you roll?": 509342425, + "1st Laser Room/Use a bomb?": 509342426, + "Spike Maze Upper Walkway/Just walk right!": 509342427, + "Skulls Chest/Move the Grave": 509342428, + "Spike Maze Near Stairs/In the Corner": 509342429, + "1st Laser Room Obscured/Follow the red laser of death": 509342430, + "Guardhouse 2 - Upper Floor/In the Mound": 509342431, + "Guardhouse 2 - Bottom Floor Secret/Hidden Hallway": 509342432, + "Guardhouse 1 Obscured/Upper Floor Obscured": 509342433, + "Guardhouse 1/Upper Floor": 509342434, + "Guardhouse 1 Ledge HC/Dancing Fox Spirit Holy Cross": 509342435, + "Golden Obelisk Holy Cross/Use the Holy Cross": 509342436, + "Ice Rod Grapple Chest/Freeze the Blob and ascend With Orb": 509342437, + "Above Save Point/Chest": 509342438, + "Above Save Point Obscured/Hidden Path": 509342439, + "Guardhouse 1 Ledge/From Guardhouse 1 Chest": 509342440, + "Near Save Point/Chest": 509342441, + "Ambushed by Spiders/Beneath Spider Chest": 509342442, + "Near Telescope/Up on the Wall": 509342443, + "Ambushed by Spiders/Spider Chest": 509342444, + "Lower Dash Chest/Dash Across": 509342445, + "Lower Grapple Chest/Grapple Across": 509342446, + "Bombable Wall/Follow the Flowers": 509342447, + "Page On Teleporter/Page": 509342448, + "Forest Belltower Save Point/Near Save Point": 509342449, + "Forest Belltower - After Guard Captain/Chest": 509342450, + "East Bell/Forest Belltower - Obscured Near Bell Top Floor": 509342451, + "Forest Belltower Obscured/Obscured Beneath Bell Bottom Floor": 509342452, + "Forest Belltower Page/Page Pickup": 509342453, + "Forest Grave Path - Holy Cross Code by Grave/Single Money Chest": 509342454, + "Forest Grave Path - Above Gate/Chest": 509342455, + "Forest Grave Path - Obscured Chest/Behind the Trees": 509342456, + "Forest Grave Path - Upper Walkway/From the top of the Guardhouse": 509342457, + "The Hero's Sword/Forest Grave Path - Sword Pickup": 509342458, + "The Hero's Sword/Hero's Grave - Tooth Relic": 509342459, + "Fortress Courtyard - From East Belltower/Crack in the Wall": 509342460, + "Fortress Leaf Piles - Secret Chest/Dusty": 509342461, + "Fortress Arena/Hexagon Red": 509342462, + "Fortress Arena/Siege Engine|Vault Key Pickup": 509342463, + "Fortress East Shortcut - Chest Near Slimes/Mind the Custodians": 509342464, + "[West Wing] Candles Holy Cross/Use the Holy Cross": 509342465, + "Westmost Upper Room/[West Wing] Dark Room Chest 1": 509342466, + "Westmost Upper Room/[West Wing] Dark Room Chest 2": 509342467, + "[East Wing] Bombable Wall/Bomb the Wall": 509342468, + "[West Wing] Page Pickup/He will never visit the Far Shore": 509342469, + "Fortress Grave Path - Upper Walkway/Go Around the East Wing": 509342470, + "Vault Hero's Grave/Fortress Grave Path - Chest Right of Grave": 509342471, + "Vault Hero's Grave/Fortress Grave Path - Obscured Chest Left of Grave": 509342472, + "Vault Hero's Grave/Hero's Grave - Flowers Relic": 509342473, + "Bridge/Chest": 509342474, + "Cell Chest 1/Drop the Shortcut Rope": 509342475, + "Obscured Behind Waterfall/Muffling Bell": 509342476, + "Back Room Chest/Lose the Lure or take 2 Damage": 509342477, + "Cell Chest 2/Mind the Custodian": 509342478, + "Near Vault/Already Stolen": 509342479, + "Slorm Room/Tobias was Trapped Here Once...": 509342480, + "Escape Chest/Don't Kick Fimbleton!": 509342481, + "Grapple Above Hot Tub/Look Up": 509342482, + "Above Vault/Obscured Doorway Ledge": 509342483, + "Main Room Top Floor/Mind the Adult Frog": 509342484, + "Main Room Bottom Floor/Altar Chest": 509342485, + "Side Room Secret Passage/Upper Right Corner": 509342486, + "Side Room Chest/Oh No! Our Frogs! They're Dead!": 509342487, + "Side Room Grapple Secret/Grapple on Over": 509342488, + "Magic Orb Pickup/Frult Meeting": 509342489, + "The Librarian/Hexagon Green": 509342490, + "Library Hall/Holy Cross Chest": 509342491, + "Library Lab Chest by Shrine 2/Chest": 509342492, + "Barrels/Back Room Barrel 4": 509350584, +} + + +# for setting up the poptracker integration +tracker_world = { + "map_page_maps": ["maps/maps_pop.json"], + "map_page_locations": ["locations/locations_pop_er.json", "locations/locations_breakables.json"], + "map_page_setting_key": "Slot:{player}:Current Map", + "map_page_index": map_page_index, + "external_pack_key": "ut_poptracker_path", + "poptracker_name_mapping": poptracker_data +} diff --git a/worlds/tww/Options.py b/worlds/tww/Options.py index d37de3acf490..d02c606f9fb9 100644 --- a/worlds/tww/Options.py +++ b/worlds/tww/Options.py @@ -19,6 +19,8 @@ class Dungeons(DefaultOnToggle): """ This controls whether dungeon locations are randomized. + + This means the items found in dungeons will be randomized, not that the entrances to dungeons will be randomized. """ display_name = "Dungeons" @@ -753,6 +755,53 @@ class TWWOptions(PerGameCommonOptions): remove_music: RemoveMusic death_link: DeathLink + def get_slot_data_dict(self) -> dict[str, Any]: + """ + Returns a dictionary of option name to value to be placed in + the slot data network package. + + :return: Dictionary of option name to value for the slot data. + """ + return self.as_dict( + "progression_dungeons", + "progression_tingle_chests", + "progression_dungeon_secrets", + "progression_puzzle_secret_caves", + "progression_combat_secret_caves", + "progression_savage_labyrinth", + "progression_great_fairies", + "progression_short_sidequests", + "progression_long_sidequests", + "progression_spoils_trading", + "progression_minigames", + "progression_battlesquid", + "progression_free_gifts", + "progression_mail", + "progression_platforms_rafts", + "progression_submarines", + "progression_eye_reef_chests", + "progression_big_octos_gunboats", + "progression_triforce_charts", + "progression_treasure_charts", + "progression_expensive_purchases", + "progression_island_puzzles", + "progression_misc", + "sword_mode", + "required_bosses", + "logic_obscurity", + "logic_precision", + "enable_tuner_logic", + "randomize_dungeon_entrances", + "randomize_secret_cave_entrances", + "randomize_miniboss_entrances", + "randomize_boss_entrances", + "randomize_secret_cave_inner_entrances", + "randomize_fairy_fountain_entrances", + "swift_sail", + "skip_rematch_bosses", + "remove_music", + ) + def get_output_dict(self) -> dict[str, Any]: """ Returns a dictionary of option name to value to be placed in diff --git a/worlds/tww/Presets.py b/worlds/tww/Presets.py index 286494262fdf..bc1477cb5384 100644 --- a/worlds/tww/Presets.py +++ b/worlds/tww/Presets.py @@ -1,61 +1,122 @@ from typing import Any tww_options_presets: dict[str, dict[str, Any]] = { - "Tournament S7": { + "Tournament S8": { "progression_dungeon_secrets": True, "progression_combat_secret_caves": True, "progression_short_sidequests": True, + "progression_long_sidequests": True, "progression_spoils_trading": True, "progression_big_octos_gunboats": True, "progression_mail": True, + "progression_platforms_rafts": True, + "progression_submarines": True, + "progression_big_octos_gunboats": True, + "progression_expensive_purchases": True, "progression_island_puzzles": True, "progression_misc": True, "randomize_mapcompass": "startwith", + "randomize_bigkeys": "startwith", "required_bosses": True, - "num_required_bosses": 3, + "num_required_bosses": 4, + "included_dungeons": ["Forsaken Fortress"], "chest_type_matches_contents": True, "logic_obscurity": "hard", + "randomize_dungeon_entrances": True, "randomize_starting_island": True, "add_shortcut_warps_between_dungeons": True, "start_inventory_from_pool": { "Telescope": 1, "Wind Waker": 1, - "Goddess Tingle Statue": 1, - "Earth Tingle Statue": 1, - "Wind Tingle Statue": 1, "Wind's Requiem": 1, "Ballad of Gales": 1, + "Command Melody": 1, "Earth God's Lyric": 1, "Wind God's Aria": 1, "Song of Passing": 1, - "Progressive Magic Meter": 2, + "Triforce Shard 1": 1, + "Triforce Shard 2": 1, + "Triforce Shard 3": 1, + "Skull Necklace": 20, + "Golden Feather": 20, + "Knight's Crest": 10, + "Green Chu Jelly": 15, + "Nayru's Pearl": 1, + "Din's Pearl": 1, }, - "start_location_hints": ["Ganon's Tower - Maze Chest"], + "start_location_hints": [ + "Windfall Island - Chu Jelly Juice Shop - Give 15 Blue Chu Jelly", + "Ganon's Tower - Maze Chest", + ], "exclude_locations": [ - "Outset Island - Orca - Give 10 Knight's Crests", "Outset Island - Great Fairy", - "Windfall Island - Chu Jelly Juice Shop - Give 15 Green Chu Jelly", + "Windfall Island - Mrs. Marie - Give 1 Joy Pendant", "Windfall Island - Mrs. Marie - Give 21 Joy Pendants", "Windfall Island - Mrs. Marie - Give 40 Joy Pendants", - "Windfall Island - Maggie's Father - Give 20 Skull Necklaces", - "Dragon Roost Island - Rito Aerie - Give Hoskit 20 Golden Feathers", + "Windfall Island - Lenzo's House - Become Lenzo's Assistant", + "Windfall Island - Lenzo's House - Bring Forest Firefly", + "Windfall Island - Sam - Decorate the Town", + "Windfall Island - Kamo - Full Moon Photo", + "Windfall Island - Linda and Anton", + "Dragon Roost Island - Secret Cave", + "Greatfish Isle - Hidden Chest", + "Mother and Child Isles - Inside Mother Isle", + "Fire Mountain - Cave - Chest", + "Fire Mountain - Lookout Platform Chest", + "Fire Mountain - Lookout Platform - Destroy the Cannons", "Fire Mountain - Big Octo", - "Mailbox - Letter from Hoskit's Girlfriend", + "Headstone Island - Top of the Island", + "Headstone Island - Submarine", + "Earth Temple - Behind Curtain Next to Hammer Button", + "The Great Sea - Goron Trading Reward", + "The Great Sea - Withered Trees", "Private Oasis - Big Octo", + "Boating Course - Raft", + "Boating Course - Cave", "Stone Watcher Island - Cave", + "Stone Watcher Island - Lookout Platform Chest", + "Stone Watcher Island - Lookout Platform - Destroy the Cannons", "Overlook Island - Cave", + "Bird's Peak Rock - Cave", + "Pawprint Isle - Wizzrobe Cave", "Thorned Fairy Island - Great Fairy", + "Thorned Fairy Island - Northeastern Lookout Platform - Destroy the Cannons", + "Thorned Fairy Island - Southwestern Lookout Platform - Defeat the Enemies", "Eastern Fairy Island - Great Fairy", + "Eastern Fairy Island - Lookout Platform - Defeat the Cannons and Enemies", "Western Fairy Island - Great Fairy", - "Southern Fairy Island - Great Fairy", - "Northern Fairy Island - Great Fairy", + "Western Fairy Island - Lookout Platform", + "Tingle Island - Ankle - Reward for All Tingle Statues", "Tingle Island - Big Octo", "Diamond Steppe Island - Big Octo", + "Rock Spire Isle - Cave", "Rock Spire Isle - Beedle's Special Shop Ship - 500 Rupee Item", "Rock Spire Isle - Beedle's Special Shop Ship - 950 Rupee Item", "Rock Spire Isle - Beedle's Special Shop Ship - 900 Rupee Item", + "Rock Spire Isle - Western Lookout Platform - Destroy the Cannons", + "Rock Spire Isle - Eastern Lookout Platform - Destroy the Cannons", + "Rock Spire Isle - Center Lookout Platform", + "Rock Spire Isle - Southeast Gunboat", "Shark Island - Cave", + "Horseshoe Island - Northwestern Lookout Platform", + "Horseshoe Island - Southeastern Lookout Platform", + "Flight Control Platform - Submarine", + "Star Island - Cave", + "Star Island - Lookout Platform", + "Star Belt Archipelago - Lookout Platform", + "Five-Star Isles - Lookout Platform - Destroy the Cannons", + "Five-Star Isles - Raft", + "Five-Star Isles - Submarine", + "Seven-Star Isles - Center Lookout Platform", + "Seven-Star Isles - Northern Lookout Platform", + "Seven-Star Isles - Southern Lookout Platform", "Seven-Star Isles - Big Octo", + "Cyclops Reef - Lookout Platform - Defeat the Enemies", + "Two-Eye Reef - Lookout Platform", + "Two-Eye Reef - Big Octo Great Fairy", + "Five-Eye Reef - Lookout Platform", + "Six-Eye Reef - Lookout Platform - Destroy the Cannons", + "Six-Eye Reef - Submarine", ], }, "Miniblins 2025": { diff --git a/worlds/tww/__init__.py b/worlds/tww/__init__.py index 6b6c3ca33a34..5432d200ae3f 100644 --- a/worlds/tww/__init__.py +++ b/worlds/tww/__init__.py @@ -11,7 +11,7 @@ from BaseClasses import MultiWorld, Region, Tutorial from Options import Toggle from worlds.AutoWorld import WebWorld, World -from worlds.Files import APContainer, AutoPatchRegister +from worlds.Files import APPlayerContainer from worlds.generic.Rules import add_item_rule from worlds.LauncherComponents import Component, SuffixIdentifier, Type, components, icon_paths, launch_subprocess @@ -51,7 +51,7 @@ def run_client() -> None: icon_paths["The Wind Waker"] = "ap:worlds.tww/assets/icon.png" -class TWWContainer(APContainer, metaclass=AutoPatchRegister): +class TWWContainer(APPlayerContainer): """ This class defines the container file for The Wind Waker. """ @@ -586,7 +586,7 @@ def fill_slot_data(self) -> Mapping[str, Any]: :return: A dictionary to be sent to the client when it connects to the server. """ - slot_data = self.options.as_dict(*self.options_dataclass.type_hints) + slot_data = self.options.get_slot_data_dict() # Add entrances to `slot_data`. This is the same data that is written to the .aptww file. entrances = { diff --git a/worlds/tww/docs/en_The Wind Waker.md b/worlds/tww/docs/en_The Wind Waker.md index 4d6e999cf9ce..a49c8d6697ae 100644 --- a/worlds/tww/docs/en_The Wind Waker.md +++ b/worlds/tww/docs/en_The Wind Waker.md @@ -19,17 +19,18 @@ a yellow Rupee, which includes a message that the location is not randomized. ## What is the goal of The Wind Waker? Reach and defeat Ganondorf atop Ganon's Tower. This will require all eight shards of the Triforce of Courage, the -fully-powered Master Sword (unless it's swordless mode), Light Arrows, and any other items necessary to reach Ganondorf. +fully-powered Master Sword (unless it's swords optional or swordless mode), Light Arrows, and any other items necessary +to reach Ganondorf. ## What does another world's item look like in TWW? Items belonging to other non-TWW worlds are represented by Father's Letter (the letter Medli gives you to give to Komali), an unused item in the randomizer. -## When the player receives an item, what happens? +## What happens when the player receives an item? -When the player receives an item, it will automatically be added to Link's inventory. Unlike many other Zelda -randomizers, Link **will not** hold the item above his head. +When the player receives an item, it will automatically be added to Link's inventory. Link **will not** hold the item +above his head like many other Zelda randomizers. ## I need help! What do I do? @@ -37,16 +38,20 @@ Refer to the [FAQ](https://lagolunatic.github.io/wwrando/faq/) first. Then, try [setup guide](/tutorial/The%20Wind%20Waker/setup/en). If you are still stuck, please ask in the Wind Waker channel in the Archipelago server. +## I opened the game in Dolphin, but I don't have any of my starting items! + +You must connect to the multiworld room to receive any items, including your starting inventory. + ## Known issues - Randomized freestanding rupees, spoils, and bait will also be given to the player picking up the item. The item will be sent properly, but the collecting player will receive an extra copy. -- Demo items (items which are held over Link's head) which are **not** randomized, such as rupees from salvages from - random light rings or rewards from minigames, will not work. +- Demo items (items held over Link's head) that are **not** randomized, such as rupees from salvages from random light + rings or rewards from minigames, will not work. - Item get messages for progressive items received on locations that send earlier than intended will be incorrect. This does not affect gameplay. - The Heart Piece count in item get messages will be off by one. This does not affect gameplay. -- It has been reported that item links can be buggy. Nothing game-breaking, but do be aware of it. +- It has been reported that item links can be buggy. It is nothing game-breaking, but do be aware of it. Feel free to report any other issues or suggest improvements in the Wind Waker channel in the Archipelago server! @@ -71,19 +76,20 @@ at least normal. A few presets are available on the [player options page](../player-options) for your convenience. -- **Tournament S7**: These are (as close to as possible) the settings used in the WWR Racing Server's - [Season 7 Tournament](https://docs.google.com/document/d/1mJj7an-DvpYilwNt-DdlFOy1fz5_NMZaPZvHeIekplc). - The preset features 3 required bosses and hard obscurity difficulty, and while the list of enabled progression options - may seem intimidating, the preset also excludes several locations. +- **Tournament S8**: These are (as close to as possible) the settings used in the WWR Racing Server's + [Season 8 Tournament](https://docs.google.com/document/d/1b8F5DL3P5fgsQC_URiwhpMfqTpsGh2M-KmtTdXVigh4). + The preset features 4 required bosses (with Helmaroc King guaranteed required), dungeon entrance rando, hard obscurity + difficulty, and a variety of overworld checks. While the list of enabled progression options may seem intimidating, + the preset also excludes several locations and starts you with a handful of items. - **Miniblins 2025**: These are (as close to as possible) the settings used in the WWR Racing Server's - [2025 Season of Minblins](https://docs.google.com/document/d/19vT68eU6PepD2BD2ZjR9ikElfqs8pXfqQucZ-TcscV8). This + [2025 Season of Miniblins](https://docs.google.com/document/d/19vT68eU6PepD2BD2ZjR9ikElfqs8pXfqQucZ-TcscV8). This preset is great if you're new to Wind Waker! There aren't too many locations in the world, and you only need to complete two dungeons. You also start with many convenience items, such as double magic, a capacity upgrade for your bow and bombs, and six hearts. - **Mixed Pools**: These are the settings used in the WWR Racing Server's [Mixed Pools Co-op Tournament](https://docs.google.com/document/d/1YGPTtEgP978TIi0PUAD792OtZbE2jBQpI8XCAy63qpg). This - preset features full entrance rando and includes many locations behind a randomized entrance. There are also a bunch - of overworld locations, as these settings were intended to be played in a two-person co-op team. The preset also has 6 + preset features full entrance rando and includes most locations behind a randomized entrance. There are also many + overworld locations, as these settings were intended to be played in a two-person co-op team. The preset also has 6 required bosses, but since entrance pools are randomized, the bosses could be found anywhere! Check your Sea Chart to find out which island the bosses are on. @@ -106,7 +112,7 @@ This randomizer would not be possible without the help from: - CrainWWR: (multiworld and Dolphin memory assistance, additional programming) - Cyb3R: (reference for `TWWClient`) - DeamonHunter: (additional programming) -- Dev5ter: (initial TWW AP implmentation) +- Dev5ter: (initial TWW AP implementation) - Gamma / SageOfMirrors: (additional programming) - LagoLunatic: (base randomizer, additional assistance) - Lunix: (Linux support, additional programming) diff --git a/worlds/tww/docs/setup_en.md b/worlds/tww/docs/setup_en.md index fa22b48bf89e..eea2d9892038 100644 --- a/worlds/tww/docs/setup_en.md +++ b/worlds/tww/docs/setup_en.md @@ -5,11 +5,13 @@ If you're playing The Wind Waker, you must follow a few simple steps to get star ## Requirements -You'll need the following components to be able to play with The Wind Waker: +You'll need the following components to be able to play The Wind Waker: * Install [Dolphin Emulator](https://dolphin-emu.org/download/). **We recommend using the latest release.** - * For Linux users, you can use the flatpak package + * Linux users can use the flatpak package [available on Flathub](https://flathub.org/apps/org.DolphinEmu.dolphin-emu). -* The 2.5.0 version of the [TWW AP Randomizer Build](https://github.com/tanjo3/wwrando/releases/tag/ap_2.5.0). +* The latest version of the [TWW AP Randomizer Build](https://github.com/tanjo3/wwrando/releases?q=tag%3Aap_2). + * Please note that this build is **different** from the one the standalone randomizer uses. This build is + specifically for Archipelago. * A The Wind Waker ISO (North American version), probably named "Legend of Zelda, The - The Wind Waker (USA).iso". Optionally, you can also download: @@ -26,17 +28,17 @@ world. Once you're happy with your settings, provide the room host with your YAM ## Connecting to a Room -The multiworld host will provide you a link to download your `aptww` file or a zip file containing everyone's files. The -`aptww` file should be named `P#__XXXXX.aptww`, where `#` is your player ID, `` is your player name, and +The multiworld host will provide you a link to download your APTWW file or a zip file containing everyone's files. The +APTWW file should be named `P#__XXXXX.aptww`, where `#` is your player ID, `` is your player name, and `XXXXX` is the room ID. The host should also provide you with the room's server name and port number. -Once you do, follow these steps to connect to the room: +Once you're ready, follow these steps to connect to the room: 1. Run the TWW AP Randomizer Build. If this is the first time you've opened the randomizer, you'll need to specify the path to your The Wind Waker ISO and the output folder for the randomized ISO. These will be saved for the next time you open the program. 2. Modify any cosmetic convenience tweaks and player customization options as desired. -3. For the APTWW file, browse and locate the path to your `aptww` file. -4. Click `Randomize` at the bottom-right. This randomizes the ISO and puts it in the output folder you specified. The +3. For the APTWW file, browse and locate the path to your APTWW file. +4. Click `Randomize` at the bottom right. This randomizes the ISO and puts it in the output folder you specified. The file will be named `TWW AP_YYYYY_P# ().iso`, where `YYYYY` is the seed name, `#` is your player ID, and `` is your player (slot) name. Verify that the values are correct for the multiworld. 5. Open Dolphin and use it to open the randomized ISO. @@ -47,7 +49,7 @@ text client. If Dolphin is not already open, or you have yet to start a new file on the website, this will be `archipelago.gg:`, where `` is the port number. If a game is hosted from the `ArchipelagoServer.exe` (without `.exe` on Linux), the port number will default to `38281` but may be changed in the `host.yaml`. -8. If you've opened a ROM corresponding to the multiworld to which you are connected, it should authenticate your slot +8. If you've opened an ISO corresponding to the multiworld to which you are connected, it should authenticate your slot name automatically when you start a new save file. ## Troubleshooting @@ -55,13 +57,18 @@ name automatically when you start a new save file. * Ensure you are running the same version of Archipelago on which the multiworld was generated. * Ensure `tww.apworld` is not in your Archipelago installation's `custom_worlds` folder. * Ensure you are using the correct randomizer build for the version of Archipelago you are using. The build should -provide an error message directing you to the correct version. You can also look at the release notes of TWW AP builds -[here](https://github.com/tanjo3/wwrando/releases) to see which versions of Archipelago each build is compatible with. + provide an error message directing you to the correct version. You can also look at the release notes of TWW AP builds + [here](https://github.com/tanjo3/wwrando/releases?q=tag%3Aap_2) to see which versions of Archipelago each build is + compatible with. +* Do not run the Archipelago Launcher or Dolphin as an administrator on Windows. * If you encounter issues with authenticating, ensure that the randomized ROM is open in Dolphin and corresponds to the -multiworld to which you are connecting. + multiworld to which you are connecting. * Ensure that you do not have any Dolphin cheats or codes enabled. Some cheats or codes can unexpectedly interfere with -emulation and make troubleshooting errors difficult. -* If you get an error message, ensure that `Enable Emulated Memory Size Override` in Dolphin (under `Options` > -`Configuration` > `Advanced`) is **disabled**. + emulation and make troubleshooting errors difficult. +* Ensure that `Enable Emulated Memory Size Override` in Dolphin (under `Options` > `Configuration` > `Advanced`) is + **disabled**. +* If the client cannot connect to Dolphin, ensure Dolphin is on the same drive as Archipelago. Having Dolphin on an + external drive has reportedly caused connection issues. +* Ensure the `Fallback Region` in Dolphin (under `Options` > `Configuration` > `General`) is set to `NTSC-U`. * If you run with a custom GC boot menu, you'll need to skip it by going to `Options` > `Configuration` > `GameCube` -and checking `Skip Main Menu`. + and checking `Skip Main Menu`. diff --git a/worlds/tww/randomizers/ItemPool.py b/worlds/tww/randomizers/ItemPool.py index 86c02f393212..e3d62fa97390 100644 --- a/worlds/tww/randomizers/ItemPool.py +++ b/worlds/tww/randomizers/ItemPool.py @@ -110,6 +110,14 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: else: filler_pool.extend([item] * data.quantity) + # If the player starts with a sword, add one to the precollected items list and remove one from the item pool. + if world.options.sword_mode == "start_with_sword": + precollected_items.append("Progressive Sword") + progression_pool.remove("Progressive Sword") + # Or, if it's swordless mode, remove all swords from the item pool. + elif world.options.sword_mode == "swordless": + useful_pool = [item for item in useful_pool if item != "Progressive Sword"] + # Assign useful and filler items to item pools in the world. world.random.shuffle(useful_pool) world.random.shuffle(filler_pool) @@ -117,7 +125,8 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: world.filler_pool = filler_pool # Add filler items to place into excluded locations. - pool.extend([world.get_filler_item_name() for _ in world.options.exclude_locations]) + excluded_locations = world.progress_locations.intersection(world.options.exclude_locations) + pool.extend([world.get_filler_item_name() for _ in excluded_locations]) # The remaining of items left to place should be the same as the number of non-excluded locations in the world. nonexcluded_locations = [ @@ -140,17 +149,6 @@ def get_pool_core(world: "TWWWorld") -> tuple[list[str], list[str]]: pool.extend(progression_pool) num_items_left_to_place -= len(progression_pool) - # If the player starts with a sword, add one to the precollected items list and remove one from the item pool. - if world.options.sword_mode == "start_with_sword": - precollected_items.append("Progressive Sword") - num_items_left_to_place += 1 - pool.remove("Progressive Sword") - # Or, if it's swordless mode, remove all swords from the item pool. - elif world.options.sword_mode == "swordless": - while "Progressive Sword" in pool: - num_items_left_to_place += 1 - pool.remove("Progressive Sword") - # Place useful items, then filler items to fill out the remaining locations. pool.extend([world.get_filler_item_name(strict=False) for _ in range(num_items_left_to_place)]) diff --git a/WargrooveClient.py b/worlds/wargroove/Client.py similarity index 58% rename from WargrooveClient.py rename to worlds/wargroove/Client.py index 595a221cd252..0627c7e9f2df 100644 --- a/WargrooveClient.py +++ b/worlds/wargroove/Client.py @@ -2,14 +2,15 @@ import atexit import os +import pkgutil import sys import asyncio import random -import shutil +import typing from typing import Tuple, List, Iterable, Dict -from worlds.wargroove import WargrooveWorld -from worlds.wargroove.Items import item_table, faction_table, CommanderData, ItemData +from . import WargrooveWorld +from .Items import item_table, faction_table, CommanderData, ItemData import ModuleUpdate ModuleUpdate.update() @@ -21,7 +22,7 @@ if __name__ == "__main__": Utils.init_logging("WargrooveClient", exception_logger="Client") -from NetUtils import NetworkItem, ClientStatus +from NetUtils import ClientStatus from CommonClient import gui_enabled, logger, get_base_parser, ClientCommandProcessor, \ CommonContext, server_loop @@ -29,6 +30,34 @@ class WargrooveClientCommandProcessor(ClientCommandProcessor): + def _cmd_sacrifice_summon(self): + """Toggles sacrifices and summons On/Off""" + if isinstance(self.ctx, WargrooveContext): + self.ctx.has_sacrifice_summon = not self.ctx.has_sacrifice_summon + if self.ctx.has_sacrifice_summon: + self.output(f"Sacrifices and summons are enabled.") + else: + unit_summon_response_file = os.path.join(self.ctx.game_communication_path, "unitSummonResponse") + if os.path.exists(unit_summon_response_file): + os.remove(unit_summon_response_file) + self.output(f"Sacrifices and summons are disabled.") + + def _cmd_deathlink(self): + """Toggles deathlink On/Off""" + if isinstance(self.ctx, WargrooveContext): + self.ctx.has_death_link = not self.ctx.has_death_link + Utils.async_start(self.ctx.update_death_link(self.ctx.has_death_link), name="Update Deathlink") + if self.ctx.has_death_link: + death_link_send_file = os.path.join(self.ctx.game_communication_path, "deathLinkSend") + if os.path.exists(death_link_send_file): + os.remove(death_link_send_file) + self.output(f"Deathlink enabled.") + else: + death_link_receive_file = os.path.join(self.ctx.game_communication_path, "deathLinkReceive") + if os.path.exists(death_link_receive_file): + os.remove(death_link_receive_file) + self.output(f"Deathlink disabled.") + def _cmd_resync(self): """Manually trigger a resync.""" self.output(f"Syncing items.") @@ -58,6 +87,11 @@ class WargrooveContext(CommonContext): commander_defense_boost_multiplier: int = 0 income_boost_multiplier: int = 0 starting_groove_multiplier: float + has_death_link: bool = False + has_sacrifice_summon: bool = True + player_stored_units_key: str = "" + ai_stored_units_key: str = "" + max_stored_units: int = 1000 faction_item_ids = { 'Starter': 0, 'Cherrystone': 52025, @@ -71,6 +105,31 @@ class WargrooveContext(CommonContext): 'Income Boost': 52023, 'Commander Defense Boost': 52024, } + unit_classes = { + "archer", + "ballista", + "balloon", + "dog", + "dragon", + "giant", + "harpoonship", + "harpy", + "knight", + "mage", + "merman", + "rifleman", + "soldier", + "spearman", + "thief", + "thief_with_gold", + "travelboat", + "trebuchet", + "turtle", + "villager", + "wagon", + "warship", + "witch", + } def __init__(self, server_address, password): super(WargrooveContext, self).__init__(server_address, password) @@ -78,31 +137,80 @@ def __init__(self, server_address, password): self.syncing = False self.awaiting_bridge = False # self.game_communication_path: files go in this path to pass data between us and the actual game + game_options = WargrooveWorld.settings + + # Validate the AppData directory with Wargroove save data. + # By default, Windows sets an environment variable we can leverage. + # However, other OSes don't usually have this value set, so we need to rely on a settings value instead. + appdata_wargroove = None if "appdata" in os.environ: - options = Utils.get_options() - root_directory = os.path.join(options["wargroove_options"]["root_directory"]) - data_directory = os.path.join("lib", "worlds", "wargroove", "data") - dev_data_directory = os.path.join("worlds", "wargroove", "data") - appdata_wargroove = os.path.expandvars(os.path.join("%APPDATA%", "Chucklefish", "Wargroove")) - if not os.path.isfile(os.path.join(root_directory, "win64_bin", "wargroove64.exe")): - print_error_and_close("WargrooveClient couldn't find wargroove64.exe. " - "Unable to infer required game_communication_path") - self.game_communication_path = os.path.join(root_directory, "AP") - if not os.path.exists(self.game_communication_path): - os.makedirs(self.game_communication_path) - self.remove_communication_files() - atexit.register(self.remove_communication_files) - if not os.path.isdir(appdata_wargroove): - print_error_and_close("WargrooveClient couldn't find Wargoove in appdata!" - "Boot Wargroove and then close it to attempt to fix this error") - if not os.path.isdir(data_directory): - data_directory = dev_data_directory - if not os.path.isdir(data_directory): - print_error_and_close("WargrooveClient couldn't find Wargoove mod and save files in install!") - shutil.copytree(data_directory, appdata_wargroove, dirs_exist_ok=True) + appdata_wargroove = os.environ['appdata'] else: - print_error_and_close("WargrooveClient couldn't detect system type. " - "Unable to infer required game_communication_path") + try: + appdata_wargroove = game_options.save_directory + except FileNotFoundError: + print_error_and_close("WargrooveClient couldn't detect a path to the AppData folder.\n" + "Unable to infer required game_communication_path.\n" + "Try setting the \"save_directory\" value in your local options file " + "to the AppData folder containing your Wargroove saves.") + appdata_wargroove = os.path.expandvars(os.path.join(appdata_wargroove, "Chucklefish", "Wargroove")) + if not os.path.isdir(appdata_wargroove): + print_error_and_close(f"WargrooveClient couldn't find Wargroove data in your AppData folder.\n" + f"Looked in \"{appdata_wargroove}\".\n" + f"If you haven't yet booted the game at least once, boot Wargroove " + f"and then close it to attempt to fix this error.\n" + f"If the AppData folder above seems wrong, try setting the " + f"\"save_directory\" value in your local options file " + f"to the AppData folder containing your Wargroove saves.") + + # Check for the Wargroove game executable path. + # This should always be set regardless of the OS. + root_directory = game_options["root_directory"] + if not os.path.isfile(os.path.join(root_directory, "win64_bin", "wargroove64.exe")): + print_error_and_close(f"WargrooveClient couldn't find wargroove64.exe in " + f"\"{root_directory}/win64_bin/\".\n" + f"Unable to infer required game_communication_path.\n" + f"Please verify the \"root_directory\" value in your local " + f"options file is set correctly.") + self.game_communication_path = os.path.join(root_directory, "AP") + if not os.path.exists(self.game_communication_path): + os.makedirs(self.game_communication_path) + self.remove_communication_files() + atexit.register(self.remove_communication_files) + if not os.path.isdir(appdata_wargroove): + print_error_and_close("WargrooveClient couldn't find Wargoove in appdata!" + "Boot Wargroove and then close it to attempt to fix this error") + mods_directory = os.path.join(appdata_wargroove, "mods", "ArchipelagoMod") + save_directory = os.path.join(appdata_wargroove, "save") + + # Wargroove doesn't always create the mods directory, so we have to do it + if not os.path.isdir(mods_directory): + os.makedirs(mods_directory) + resources = ["data/mods/ArchipelagoMod/maps.dat", + "data/mods/ArchipelagoMod/mod.dat", + "data/mods/ArchipelagoMod/modAssets.dat", + "data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp", + "data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak"] + file_paths = [os.path.join(mods_directory, "maps.dat"), + os.path.join(mods_directory, "mod.dat"), + os.path.join(mods_directory, "modAssets.dat"), + os.path.join(save_directory, "campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp"), + os.path.join(save_directory, "campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak")] + for resource, destination in zip(resources, file_paths): + file_data = pkgutil.get_data("worlds.wargroove", resource) + if file_data is None: + print_error_and_close("WargrooveClient couldn't find Wargoove mod and save files in install!") + with open(destination, 'wb') as f: + f.write(file_data) + + def on_deathlink(self, data: typing.Dict[str, typing.Any]) -> None: + with open(os.path.join(self.game_communication_path, "deathLinkReceive"), 'w+') as f: + text = data.get("cause", "") + if text: + f.write(f"DeathLink: {text}") + else: + f.write(f"DeathLink: Received from {data['source']}") + super(WargrooveContext, self).on_deathlink(data) async def server_auth(self, password_requested: bool = False): if password_requested and not self.password: @@ -138,20 +246,25 @@ def remove_communication_files(self): def on_package(self, cmd: str, args: dict): if cmd in {"Connected"}: + slot_data = args["slot_data"] + self.has_death_link = slot_data.get("death_link", False) filename = f"AP_settings.json" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - slot_data = args["slot_data"] - json.dump(args["slot_data"], f) + json.dump(slot_data, f) self.can_choose_commander = slot_data["can_choose_commander"] print('can choose commander:', self.can_choose_commander) self.starting_groove_multiplier = slot_data["starting_groove_multiplier"] self.income_boost_multiplier = slot_data["income_boost"] self.commander_defense_boost_multiplier = slot_data["commander_defense_boost"] - f.close() for ss in self.checked_locations: filename = f"send{ss}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - f.close() + pass + + self.player_stored_units_key = f"wargroove_player_units_{self.team}" + self.ai_stored_units_key = f"wargroove_ai_units_{self.team}" + self.set_notify(self.player_stored_units_key, self.ai_stored_units_key) + self.update_commander_data() self.ui.update_tracker() @@ -161,7 +274,6 @@ def on_package(self, cmd: str, args: dict): filename = f"seed{i}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: f.write(str(random.randint(0, 4294967295))) - f.close() if cmd in {"RoomInfo"}: self.seed_name = args["seed_name"] @@ -189,7 +301,6 @@ def on_package(self, cmd: str, args: dict): f.write(f"{item_count * self.commander_defense_boost_multiplier}") else: f.write(f"{item_count}") - f.close() print_filename = f"AP_{str(network_item.item)}.item.print" print_path = os.path.join(self.game_communication_path, print_filename) @@ -200,7 +311,6 @@ def on_package(self, cmd: str, args: dict): self.item_names.lookup_in_game(network_item.item) + " from " + self.player_names[network_item.player]) - f.close() self.update_commander_data() self.ui.update_tracker() @@ -209,7 +319,7 @@ def on_package(self, cmd: str, args: dict): for ss in self.checked_locations: filename = f"send{ss}" with open(os.path.join(self.game_communication_path, filename), 'w') as f: - f.close() + pass def run_gui(self): """Import kivy UI system and start running it as self.ui_task.""" @@ -385,32 +495,75 @@ def get_commanders(self) -> List[Tuple[CommanderData, bool]]: async def game_watcher(ctx: WargrooveContext): - from worlds.wargroove.Locations import location_table while not ctx.exit_event.is_set(): - if ctx.syncing == True: - sync_msg = [{'cmd': 'Sync'}] - if ctx.locations_checked: - sync_msg.append({"cmd": "LocationChecks", "locations": list(ctx.locations_checked)}) - await ctx.send_msgs(sync_msg) - ctx.syncing = False - sending = [] - victory = False - for root, dirs, files in os.walk(ctx.game_communication_path): - for file in files: - if file.find("send") > -1: - st = file.split("send", -1)[1] - sending = sending+[(int(st))] - os.remove(os.path.join(ctx.game_communication_path, file)) - if file.find("victory") > -1: - victory = True - os.remove(os.path.join(ctx.game_communication_path, file)) - ctx.locations_checked = sending - message = [{"cmd": 'LocationChecks', "locations": sending}] - await ctx.send_msgs(message) - if not ctx.finished_game and victory: - await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) - ctx.finished_game = True - await asyncio.sleep(0.1) + try: + if ctx.syncing == True: + sync_msg = [{'cmd': 'Sync'}] + if ctx.locations_checked: + sync_msg.append({"cmd": "LocationChecks", "locations": list(ctx.locations_checked)}) + await ctx.send_msgs(sync_msg) + ctx.syncing = False + sending = [] + victory = False + for root, dirs, files in os.walk(ctx.game_communication_path): + for file in files: + if file == "deathLinkSend" and ctx.has_death_link: + with open(os.path.join(ctx.game_communication_path, file), 'r') as f: + failed_mission = f.read() + if ctx.slot is not None: + await ctx.send_death(f"{ctx.player_names[ctx.slot]} failed {failed_mission}") + os.remove(os.path.join(ctx.game_communication_path, file)) + if file.find("send") > -1: + st = file.split("send", -1)[1] + sending = sending+[(int(st))] + os.remove(os.path.join(ctx.game_communication_path, file)) + if file.find("victory") > -1: + victory = True + os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSacrifice" or file == "unitSacrificeAI": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSacrificeAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, file), 'r') as f: + unit_class = f.read() + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "add", "value": [unit_class[:64]]}]}] + await ctx.send_msgs(message) + os.remove(os.path.join(ctx.game_communication_path, file)) + if file == "unitSummonRequestAI" or file == "unitSummonRequest": + if ctx.has_sacrifice_summon: + stored_units_key = ctx.player_stored_units_key + if file == "unitSummonRequestAI": + stored_units_key = ctx.ai_stored_units_key + with open(os.path.join(ctx.game_communication_path, "unitSummonResponse"), 'w') as f: + if stored_units_key in ctx.stored_data: + stored_units = ctx.stored_data[stored_units_key] + if stored_units is None: + stored_units = [] + wg1_stored_units = [unit for unit in stored_units if unit in ctx.unit_classes] + if len(wg1_stored_units) != 0: + summoned_unit = random.choice(wg1_stored_units) + message = [{"cmd": 'Set', "key": stored_units_key, + "default": [], + "want_reply": True, + "operations": [{"operation": "remove", "value": summoned_unit[:64]}]}] + await ctx.send_msgs(message) + f.write(summoned_unit) + os.remove(os.path.join(ctx.game_communication_path, file)) + + ctx.locations_checked = sending + message = [{"cmd": 'LocationChecks', "locations": sending}] + await ctx.send_msgs(message) + if not ctx.finished_game and victory: + await ctx.send_msgs([{"cmd": "StatusUpdate", "status": ClientStatus.CLIENT_GOAL}]) + ctx.finished_game = True + await asyncio.sleep(0.1) + + except Exception as err: + logger.warn("Exception in communication thread, a check may not have been sent: " + str(err)) def print_error_and_close(msg): @@ -418,8 +571,9 @@ def print_error_and_close(msg): Utils.messagebox("Error", msg, error=True) sys.exit(1) -if __name__ == '__main__': - async def main(args): +def launch(*launch_args: str): + async def main(): + args = parser.parse_args(launch_args) ctx = WargrooveContext(args.connect, args.password) ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop") if gui_enabled: @@ -439,7 +593,6 @@ async def main(args): parser = get_base_parser(description="Wargroove Client, for text interfacing.") - args, rest = parser.parse_known_args() colorama.just_fix_windows_console() - asyncio.run(main(args)) + asyncio.run(main()) colorama.deinit() diff --git a/worlds/wargroove/Options.py b/worlds/wargroove/Options.py index 1af077206556..a933cdb17b81 100644 --- a/worlds/wargroove/Options.py +++ b/worlds/wargroove/Options.py @@ -1,6 +1,6 @@ -import typing from dataclasses import dataclass -from Options import Choice, Option, Range, PerGameCommonOptions +from Options import Choice, Range, PerGameCommonOptions, StartInventoryPool, OptionDict, OptionGroup, \ + DeathLinkMixin class IncomeBoost(Range): @@ -31,8 +31,65 @@ class CommanderChoice(Choice): option_unlockable_factions = 1 option_random_starting_faction = 2 + +class PlayerSacrificeLimit(Range): + """How many times the player can sacrifice a unit at the Stronghold per level attempt. + Sacrificed units are stored in the multiworld for other players to summon.""" + display_name = "Player Sacrifice Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class PlayerSummonLimit(Range): + """How many times the player can summon a unit at the Stronghold per level attempt. + Summoned units are from the multiworld which were sacrificed by other players.""" + display_name = "Player Summon Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class AISacrificeLimit(Range): + """How many times the AI can sacrifice a unit at the Stronghold per level attempt. + Sacrificed units are stored in the multiworld for other AIs to summon.""" + display_name = "AI Sacrifice Limit" + range_start = 0 + range_end = 5 + default = 0 + + +class AISummonLimit(Range): + """How many times the AI can summon a unit at the Stronghold per level attempt. + Summoned units are from the multiworld which were sacrificed by other AIs. + AI summoning can be overwhelming, use /sacrifice_summon in the client if a level becomes impossible.""" + display_name = "AI Summon Limit" + range_start = 0 + range_end = 5 + default = 0 + + +wargroove_option_groups = [ + OptionGroup("General Options", [ + IncomeBoost, + CommanderDefenseBoost, + CommanderChoice + ]), + OptionGroup("Sacrifice and Summon Options", [ + PlayerSacrificeLimit, + PlayerSummonLimit, + AISacrificeLimit, + AISummonLimit, + ]), +] + @dataclass -class WargrooveOptions(PerGameCommonOptions): +class WargrooveOptions(DeathLinkMixin, PerGameCommonOptions): income_boost: IncomeBoost commander_defense_boost: CommanderDefenseBoost commander_choice: CommanderChoice + player_sacrifice_limit: PlayerSacrificeLimit + player_summon_limit: PlayerSummonLimit + ai_sacrifice_limit: AISacrificeLimit + ai_summon_limit: AISummonLimit + start_inventory_from_pool: StartInventoryPool diff --git a/worlds/wargroove/__init__.py b/worlds/wargroove/__init__.py index f204f468d1ab..e6bcc6288a4a 100644 --- a/worlds/wargroove/__init__.py +++ b/worlds/wargroove/__init__.py @@ -8,18 +8,42 @@ from .Regions import create_regions from .Rules import set_rules from worlds.AutoWorld import World, WebWorld -from .Options import WargrooveOptions +from .Options import WargrooveOptions, wargroove_option_groups +from worlds.LauncherComponents import Component, components, Type, launch as launch_component + + +def launch_client(*args: str): + from .Client import launch + launch_component(launch, name="WargrooveClient", args=args) + + +components.append(Component("Wargroove Client", game_name="Wargroove", func=launch_client, component_type=Type.CLIENT)) class WargrooveSettings(settings.Group): class RootDirectory(settings.UserFolderPath): """ - Locate the Wargroove root directory on your system. - This is used by the Wargroove client, so it knows where to send communication files to + Locates the Wargroove root directory on your system. + This is used by the Wargroove client, so it knows where to send communication files to. """ description = "Wargroove root directory" + class SaveDirectory(settings.UserFolderPath): + """ + Locates the Wargroove save file directory on your system. + This is used by the Wargroove client, so it knows where to send mod and save files to. + """ + description = "Wargroove save file/appdata directory" + + def browse(self, **kwargs): + from Utils import messagebox + messagebox("AppData folder not found", + "WargrooveClient couldn't detect a path to the AppData folder.\n" + "Please select the folder containing the \"/Chucklefish/Wargroove/\" directories.") + super().browse(**kwargs) + root_directory: RootDirectory = RootDirectory("C:/Program Files (x86)/Steam/steamapps/common/Wargroove") + save_directory: SaveDirectory = SaveDirectory("%APPDATA%") class WargrooveWeb(WebWorld): @@ -32,6 +56,8 @@ class WargrooveWeb(WebWorld): ["Fly Sniper"] )] + option_groups = wargroove_option_groups + class WargrooveWorld(World): """ @@ -55,6 +81,11 @@ def _get_slot_data(self): 'commander_defense_boost': self.options.commander_defense_boost.value, 'can_choose_commander': self.options.commander_choice.value != 0, 'commander_choice': self.options.commander_choice.value, + 'player_sacrifice_limit': self.options.player_sacrifice_limit.value, + 'player_summon_limit': self.options.player_summon_limit.value, + 'ai_sacrifice_limit': self.options.ai_sacrifice_limit.value, + 'ai_summon_limit': self.options.ai_summon_limit.value, + 'death_link': self.options.death_link.value, 'starting_groove_multiplier': 20 # Backwards compatibility in case this ever becomes an option } diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat b/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat index a7ffb0733133..fca94c194eae 100644 Binary files a/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat and b/worlds/wargroove/data/mods/ArchipelagoMod/maps.dat differ diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat b/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat index 22464857e0da..6a12724d9acc 100644 Binary files a/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat and b/worlds/wargroove/data/mods/ArchipelagoMod/mod.dat differ diff --git a/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat b/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat index 54026ab2c2dd..a51c17e954fd 100644 Binary files a/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat and b/worlds/wargroove/data/mods/ArchipelagoMod/modAssets.dat differ diff --git a/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp b/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp index 93c4f3c88742..f823aa0477db 100644 Binary files a/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp and b/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp differ diff --git a/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak b/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak index a916c11619d3..2ad3d37a71d3 100644 Binary files a/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak and b/worlds/wargroove/data/save/campaign-c40a6e5b0cdf86ddac03b276691c483d.cmp.bak differ diff --git a/worlds/wargroove/docs/en_Wargroove.md b/worlds/wargroove/docs/en_Wargroove.md index 31fd8c81301c..b8dcc7aca852 100644 --- a/worlds/wargroove/docs/en_Wargroove.md +++ b/worlds/wargroove/docs/en_Wargroove.md @@ -1,4 +1,4 @@ -# Wargroove (Steam, Windows) +# Wargroove (Steam, Windows, Linux) ## Where is the options page? @@ -39,3 +39,5 @@ The following commands are only available when using the WargrooveClient to play - `/resync` Manually trigger a resync. - `/commander` Set the current commander to the given commander. +- `/deathlink` Toggle deathlink between On and Off. +- `/sacrifice_summon` Toggle sacrificing and summoning units between On and Off. diff --git a/worlds/wargroove/docs/wargroove_en.md b/worlds/wargroove/docs/wargroove_en.md index 9c2645178aa2..d23f58309b5d 100644 --- a/worlds/wargroove/docs/wargroove_en.md +++ b/worlds/wargroove/docs/wargroove_en.md @@ -2,8 +2,8 @@ ## Required Files -- Wargroove with the Double Trouble DLC installed through Steam on Windows - - Only the Steam Windows version is supported. MAC, Switch, Xbox, and Playstation are not supported. +- Wargroove with the Double Trouble DLC installed through Steam on Windows and Linux + - Only the Steam versions on Windows and Linux are supported. MAC, Switch, Xbox, and Playstation are not supported. - [The most recent Archipelago release](https://github.com/ArchipelagoMW/Archipelago/releases) ## Backup playerProgress files @@ -23,10 +23,20 @@ is strongly recommended in case they become corrupted. - You may have to replace all single \\ with \\\\. 4. Start the Wargroove client. +## Linux Only: Select AppData equivalent when starting the client +1. Shut down Wargroove if it is open. +2. Start the Archipelago Wargroove Client from the Archipelago Launcher. +3. A file select dialogue will appear, claiming it cannot detect a path to the AppData folder. +4. Navigate to your Steam install directory and select . +`/steamapps/compatdata/607050/pfx/drive_c/users/steamuser/AppData/Roaming` as the save directory. +5. Using a default Steam install path, the full AppData path is +`~/.steam/steam/steamapps/compatdata/607050/pfx/drive_c/users/steamuser/AppData/Roaming`. +6. The client should start. + ## Installing the Archipelago Wargroove Mod and Campaign files 1. Shut down Wargroove if it is open. -2. Start the ArchipelagoWargrooveClient.exe from the Archipelago installation. +2. Start the Archipelago Wargroove Client from the Archipelago Launcher. This should install the mod and campaign for you. 3. Start Wargroove. diff --git a/worlds/witness/player_items.py b/worlds/witness/player_items.py index 7b71e3c1f933..d13ebcafdcaf 100644 --- a/worlds/witness/player_items.py +++ b/worlds/witness/player_items.py @@ -214,20 +214,17 @@ def get_early_items(self) -> List[str]: # Remove items that are mentioned in any plando options. (Hopefully, in the future, plando will get resolved # before create_items so that we'll be able to check placed items instead of just removing all items mentioned # regardless of whether or not they actually wind up being manually placed. - for plando_setting in self._multiworld.plando_items[self._player_id]: - if plando_setting.get("from_pool", True): - for item_setting_key in [key for key in ["item", "items"] if key in plando_setting]: - if isinstance(plando_setting[item_setting_key], str): - output -= {plando_setting[item_setting_key]} - elif isinstance(plando_setting[item_setting_key], dict): - output -= {item for item, weight in plando_setting[item_setting_key].items() if weight} - else: - # Assume this is some other kind of iterable. - for inner_item in plando_setting[item_setting_key]: - if isinstance(inner_item, str): - output -= {inner_item} - elif isinstance(inner_item, dict): - output -= {item for item, weight in inner_item.items() if weight} + for plando_setting in self._world.options.plando_items: + if plando_setting.from_pool: + if isinstance(plando_setting.items, dict): + output -= {item for item, weight in plando_setting.items.items() if weight} + else: + # Assume this is some other kind of iterable. + for inner_item in plando_setting.items: + if isinstance(inner_item, str): + output -= {inner_item} + elif isinstance(inner_item, dict): + output -= {item for item, weight in inner_item.items() if weight} # Sort the output for consistency across versions if the implementation changes but the logic does not. return sorted(output) diff --git a/worlds/zillion/patch.py b/worlds/zillion/patch.py index 0eee3315f4a1..e28d70f18182 100644 --- a/worlds/zillion/patch.py +++ b/worlds/zillion/patch.py @@ -1,5 +1,5 @@ import os -from typing import BinaryIO +from typing import Any, BinaryIO import zipfile from typing_extensions import override @@ -46,9 +46,10 @@ def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None: compress_type=zipfile.ZIP_DEFLATED) @override - def read_contents(self, opened_zipfile: zipfile.ZipFile) -> None: - super().read_contents(opened_zipfile) + def read_contents(self, opened_zipfile: zipfile.ZipFile) -> dict[str, Any]: + manifest = super().read_contents(opened_zipfile) self.gen_data_str = opened_zipfile.read("gen_data.json").decode() + return manifest @override def patch(self, target: str) -> None: diff --git a/worlds_disabled/README.md b/worlds_disabled/README.md deleted file mode 100644 index a7bffe222b14..000000000000 --- a/worlds_disabled/README.md +++ /dev/null @@ -1,13 +0,0 @@ -## Folder Purpose - -This folder is for already merged worlds that are unmaintained and currently broken. If you are interested in fixing and -stepping up as maintainer for any of these worlds, please review the [world maintainer](/docs/world%20maintainer.md) -documentation. - -## Information for Disabled Worlds - -For each disabled world, a README file can be found detailing when the world was disabled and the reasons that it -was disabled. In order to be considered for reactivation, these concerns should be handled at a bare minimum. However, -each world may have additional issues that also need to be handled, such as deprecated API calls or missing components. - - diff --git a/worlds_disabled/oribf/Items.py b/worlds_disabled/oribf/Items.py deleted file mode 100644 index 788b802de387..000000000000 --- a/worlds_disabled/oribf/Items.py +++ /dev/null @@ -1,10 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from typing import Dict - -item_table: Dict[str, int] = \ - {'EX100': 262144, 'AC': 262145, 'Bash': 262146, 'HC': 262147, 'Plant': 262148, 'MapStone': 262149, 'ChargeFlame': 262150, 'ChargeJump': 262151, 'Climb': 262152, 'MS': 262153, 'Dash': 262154, 'EC': 262155, 'EX200': 262156, 'DoubleJump': 262157, 'EX15': 262158, 'Wind': 262159, 'KS': 262160, 'Water': 262161, 'Glide': 262162, 'Grenade': 262163, 'ForlornKey': 262164, 'CS': 262165, 'Stomp': 262166, 'HoruKey': 262167, 'WallJump': 262168, 'GinsoKey': 262169} - -default_pool: Dict[str, int] = \ - {'EX100': 53, 'AC': 33, 'Bash': 1, 'HC': 12, 'Plant': 24, 'MapStone': 9, 'ChargeFlame': 1, 'ChargeJump': 1, 'Climb': 1, 'MS': 9, 'Dash': 1, 'EC': 14, 'EX200': 29, 'DoubleJump': 1, 'EX15': 6, 'Wind': 1, 'KS': 40, 'Water': 1, 'Glide': 1, 'Grenade': 1, 'ForlornKey': 1, 'CS': 8, 'Stomp': 1, 'HoruKey': 1, 'WallJump': 1, 'GinsoKey': 1} \ No newline at end of file diff --git a/worlds_disabled/oribf/Locations.py b/worlds_disabled/oribf/Locations.py deleted file mode 100644 index 1522fb557ea1..000000000000 --- a/worlds_disabled/oribf/Locations.py +++ /dev/null @@ -1,262 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -from .Types import * - -locations_data = \ - {'AboveChargeFlameTreeExp': Location(code=262144, vanilla_item='EX100'), - 'AboveChargeJumpAbilityCell': Location(code=262145, vanilla_item='AC'), - 'AboveFourthHealth': Location(code=262146, vanilla_item='AC'), - 'AboveGrottoTeleporterExp': Location(code=262147, vanilla_item='EX100'), - 'BashAreaExp': Location(code=262148, vanilla_item='EX100'), - 'BashSkillTree': Location(code=262149, vanilla_item='SKBash'), - 'BelowGrottoTeleporterHealthCell': Location(code=262150, vanilla_item='HC'), - 'BelowGrottoTeleporterPlant': Location(code=262151, vanilla_item='Plant'), - 'BlackrootBoulderExp': Location(code=262152, vanilla_item='EX100'), - 'BlackrootMap': Location(code=262153, vanilla_item='MapStone'), - 'BlackrootTeleporterHealthCell': Location(code=262154, vanilla_item='HC'), - 'ChargeFlameAreaExp': Location(code=262155, vanilla_item='EX100'), - 'ChargeFlameAreaPlant': Location(code=262156, vanilla_item='Plant'), - 'ChargeFlameSkillTree': Location(code=262157, vanilla_item='SKChargeFlame'), - 'ChargeJumpSkillTree': Location(code=262158, vanilla_item='SKChargeJump'), - 'ClimbSkillTree': Location(code=262159, vanilla_item='SKClimb'), - 'DashAreaAbilityCell': Location(code=262160, vanilla_item='AC'), - 'DashAreaMapstone': Location(code=262161, vanilla_item='MS'), - 'DashAreaOrbRoomExp': Location(code=262162, vanilla_item='EX100'), - 'DashAreaPlant': Location(code=262163, vanilla_item='Plant'), - 'DashAreaRoofExp': Location(code=262164, vanilla_item='EX100'), - 'DashSkillTree': Location(code=262165, vanilla_item='SKDash'), - 'DeathGauntletEnergyCell': Location(code=262166, vanilla_item='EC'), - 'DeathGauntletExp': Location(code=262167, vanilla_item='EX100'), - 'DeathGauntletRoofHealthCell': Location(code=262168, vanilla_item='HC'), - 'DeathGauntletRoofPlant': Location(code=262169, vanilla_item='Plant'), - 'DeathGauntletStompSwim': Location(code=262170, vanilla_item='EX200'), - 'DeathGauntletSwimEnergyDoor': Location(code=262171, vanilla_item='AC'), - 'DoorWarpExp': Location(code=262172, vanilla_item='EX200'), - 'DoubleJumpAreaExp': Location(code=262173, vanilla_item='EX100'), - 'DoubleJumpSkillTree': Location(code=262174, vanilla_item='SKDoubleJump'), - 'FarLeftGumoHideoutExp': Location(code=262175, vanilla_item='EX100'), - 'FirstPickup': Location(code=262176, vanilla_item='EX15'), - 'ForlornEntranceExp': Location(code=262177, vanilla_item='EX200'), - 'ForlornEscape': Location(code=262178, vanilla_item='EVWind'), - 'ForlornHiddenSpiderExp': Location(code=262179, vanilla_item='EX100'), - 'ForlornKeystone1': Location(code=262180, vanilla_item='KS'), - 'ForlornKeystone2': Location(code=262181, vanilla_item='KS'), - 'ForlornKeystone3': Location(code=262182, vanilla_item='KS'), - 'ForlornKeystone4': Location(code=262183, vanilla_item='KS'), - 'ForlornMap': Location(code=262184, vanilla_item='MapStone'), - 'ForlornPlant': Location(code=262185, vanilla_item='Plant'), - 'FourthHealthCell': Location(code=262186, vanilla_item='HC'), - 'FronkeyFight': Location(code=262187, vanilla_item='EX15'), - 'FronkeyWalkRoof': Location(code=262188, vanilla_item='EX200'), - 'GinsoEscapeExit': Location(code=262189, vanilla_item='EVWater'), - 'GinsoEscapeHangingExp': Location(code=262190, vanilla_item='EX100'), - 'GinsoEscapeJumpPadExp': Location(code=262191, vanilla_item='EX100'), - 'GinsoEscapeProjectileExp': Location(code=262192, vanilla_item='EX100'), - 'GinsoEscapeSpiderExp': Location(code=262193, vanilla_item='EX200'), - 'GladesGrenadePool': Location(code=262194, vanilla_item='EX200'), - 'GladesGrenadeTree': Location(code=262195, vanilla_item='AC'), - 'GladesKeystone1': Location(code=262196, vanilla_item='KS'), - 'GladesKeystone2': Location(code=262197, vanilla_item='KS'), - 'GladesLaser': Location(code=262198, vanilla_item='EC'), - 'GladesLaserGrenade': Location(code=262199, vanilla_item='AC'), - 'GladesMainPool': Location(code=262200, vanilla_item='EX100'), - 'GladesMainPoolDeep': Location(code=262201, vanilla_item='EC'), - 'GladesMap': Location(code=262202, vanilla_item='MapStone'), - 'GladesMapKeystone': Location(code=262203, vanilla_item='KS'), - 'GlideSkillFeather': Location(code=262204, vanilla_item='SKGlide'), - 'GrenadeAreaAbilityCell': Location(code=262205, vanilla_item='AC'), - 'GrenadeAreaExp': Location(code=262206, vanilla_item='EX100'), - 'GrenadeSkillTree': Location(code=262207, vanilla_item='SKGrenade'), - 'GrottoEnergyDoorHealthCell': Location(code=262208, vanilla_item='HC'), - 'GrottoEnergyDoorSwim': Location(code=262209, vanilla_item='EX100'), - 'GrottoHideoutFallAbilityCell': Location(code=262210, vanilla_item='AC'), - 'GrottoLasersRoofExp': Location(code=262211, vanilla_item='EX100'), - 'GrottoSwampDrainAccessExp': Location(code=262212, vanilla_item='EX100'), - 'GrottoSwampDrainAccessPlant': Location(code=262213, vanilla_item='Plant'), - 'GroveAboveSpiderWaterEnergyCell': Location(code=262214, vanilla_item='EC'), - 'GroveAboveSpiderWaterExp': Location(code=262215, vanilla_item='EX200'), - 'GroveAboveSpiderWaterHealthCell': Location(code=262216, vanilla_item='HC'), - 'GroveSpiderWaterSwim': Location(code=262217, vanilla_item='EX100'), - 'GroveWaterStompAbilityCell': Location(code=262218, vanilla_item='AC'), - 'GumoHideoutCrusherExp': Location(code=262219, vanilla_item='EX100'), - 'GumoHideoutCrusherKeystone': Location(code=262220, vanilla_item='KS'), - 'GumoHideoutEnergyCell': Location(code=262221, vanilla_item='EC'), - 'GumoHideoutLeftHangingExp': Location(code=262222, vanilla_item='EX15'), - 'GumoHideoutMap': Location(code=262223, vanilla_item='MapStone'), - 'GumoHideoutMapstone': Location(code=262224, vanilla_item='MS'), - 'GumoHideoutMiniboss': Location(code=262225, vanilla_item='KS'), - 'GumoHideoutRedirectAbilityCell': Location(code=262226, vanilla_item='AC'), - 'GumoHideoutRedirectEnergyCell': Location(code=262227, vanilla_item='EC'), - 'GumoHideoutRedirectExp': Location(code=262228, vanilla_item='EX200'), - 'GumoHideoutRedirectPlant': Location(code=262229, vanilla_item='Plant'), - 'GumoHideoutRightHangingExp': Location(code=262230, vanilla_item='EX15'), - 'GumoHideoutRockfallExp': Location(code=262231, vanilla_item='EX100'), - 'GumonSeal': Location(code=262232, vanilla_item='EVForlornKey'), - 'HollowGroveMap': Location(code=262233, vanilla_item='MapStone'), - 'HollowGroveMapPlant': Location(code=262234, vanilla_item='Plant'), - 'HollowGroveMapstone': Location(code=262235, vanilla_item='MS'), - 'HollowGroveTreeAbilityCell': Location(code=262236, vanilla_item='AC'), - 'HollowGroveTreePlant': Location(code=262237, vanilla_item='Plant'), - 'HoruFieldsAbilityCell': Location(code=262238, vanilla_item='AC'), - 'HoruFieldsEnergyCell': Location(code=262239, vanilla_item='EC'), - 'HoruFieldsHealthCell': Location(code=262240, vanilla_item='HC'), - 'HoruFieldsHiddenExp': Location(code=262241, vanilla_item='EX200'), - 'HoruFieldsPlant': Location(code=262242, vanilla_item='Plant'), - 'HoruL1': Location(code=262243, vanilla_item='CS'), - 'HoruL2': Location(code=262244, vanilla_item='CS'), - 'HoruL3': Location(code=262245, vanilla_item='CS'), - 'HoruL4': Location(code=262246, vanilla_item='CS'), - 'HoruL4ChaseExp': Location(code=262247, vanilla_item='EX200'), - 'HoruL4LowerExp': Location(code=262248, vanilla_item='EX200'), - 'HoruLavaDrainedLeftExp': Location(code=262249, vanilla_item='EX200'), - 'HoruLavaDrainedRightExp': Location(code=262250, vanilla_item='EX200'), - 'HoruMap': Location(code=262251, vanilla_item='MapStone'), - 'HoruR1': Location(code=262252, vanilla_item='CS'), - 'HoruR1EnergyCell': Location(code=262253, vanilla_item='EC'), - 'HoruR1HangingExp': Location(code=262254, vanilla_item='EX100'), - 'HoruR1Mapstone': Location(code=262255, vanilla_item='MS'), - 'HoruR2': Location(code=262256, vanilla_item='CS'), - 'HoruR3': Location(code=262257, vanilla_item='CS'), - 'HoruR3Plant': Location(code=262258, vanilla_item='Plant'), - 'HoruR4': Location(code=262259, vanilla_item='CS'), - 'HoruR4DrainedExp': Location(code=262260, vanilla_item='EX200'), - 'HoruR4LaserExp': Location(code=262261, vanilla_item='EX200'), - 'HoruR4StompExp': Location(code=262262, vanilla_item='EX200'), - 'HoruTeleporterExp': Location(code=262263, vanilla_item='EX200'), - 'IcelessExp': Location(code=262264, vanilla_item='EX100'), - 'InnerSwampDrainExp': Location(code=262265, vanilla_item='EX100'), - 'InnerSwampEnergyCell': Location(code=262266, vanilla_item='EC'), - 'InnerSwampHiddenSwimExp': Location(code=262267, vanilla_item='EX100'), - 'InnerSwampStompExp': Location(code=262268, vanilla_item='EX100'), - 'InnerSwampSwimLeftKeystone': Location(code=262269, vanilla_item='KS'), - 'InnerSwampSwimMapstone': Location(code=262270, vanilla_item='MS'), - 'InnerSwampSwimRightKeystone': Location(code=262271, vanilla_item='KS'), - 'KuroPerchExp': Location(code=262272, vanilla_item='EX200'), - 'LeftGladesExp': Location(code=262273, vanilla_item='EX15'), - 'LeftGladesHiddenExp': Location(code=262274, vanilla_item='EX15'), - 'LeftGladesKeystone': Location(code=262275, vanilla_item='KS'), - 'LeftGladesMapstone': Location(code=262276, vanilla_item='MS'), - 'LeftGrottoTeleporterExp': Location(code=262277, vanilla_item='EX200'), - 'LeftGumoHideoutExp': Location(code=262278, vanilla_item='EX100'), - 'LeftGumoHideoutHealthCell': Location(code=262279, vanilla_item='HC'), - 'LeftGumoHideoutLowerPlant': Location(code=262280, vanilla_item='Plant'), - 'LeftGumoHideoutSwim': Location(code=262281, vanilla_item='EX100'), - 'LeftGumoHideoutUpperPlant': Location(code=262282, vanilla_item='Plant'), - 'LeftSorrowAbilityCell': Location(code=262283, vanilla_item='AC'), - 'LeftSorrowEnergyCell': Location(code=262284, vanilla_item='EC'), - 'LeftSorrowGrenade': Location(code=262285, vanilla_item='EX200'), - 'LeftSorrowKeystone1': Location(code=262286, vanilla_item='KS'), - 'LeftSorrowKeystone2': Location(code=262287, vanilla_item='KS'), - 'LeftSorrowKeystone3': Location(code=262288, vanilla_item='KS'), - 'LeftSorrowKeystone4': Location(code=262289, vanilla_item='KS'), - 'LeftSorrowPlant': Location(code=262290, vanilla_item='Plant'), - 'LostGroveAbilityCell': Location(code=262291, vanilla_item='AC'), - 'LostGroveHiddenExp': Location(code=262292, vanilla_item='EX100'), - 'LostGroveLongSwim': Location(code=262293, vanilla_item='AC'), - 'LostGroveTeleporter': Location(code=262294, vanilla_item='EX100'), - 'LowerBlackrootAbilityCell': Location(code=262295, vanilla_item='AC'), - 'LowerBlackrootGrenadeThrow': Location(code=262296, vanilla_item='AC'), - 'LowerBlackrootLaserAbilityCell': Location(code=262297, vanilla_item='AC'), - 'LowerBlackrootLaserExp': Location(code=262298, vanilla_item='EX100'), - 'LowerGinsoHiddenExp': Location(code=262299, vanilla_item='EX100'), - 'LowerGinsoKeystone1': Location(code=262300, vanilla_item='KS'), - 'LowerGinsoKeystone2': Location(code=262301, vanilla_item='KS'), - 'LowerGinsoKeystone3': Location(code=262302, vanilla_item='KS'), - 'LowerGinsoKeystone4': Location(code=262303, vanilla_item='KS'), - 'LowerGinsoPlant': Location(code=262304, vanilla_item='Plant'), - 'LowerValleyExp': Location(code=262305, vanilla_item='EX100'), - 'LowerValleyMapstone': Location(code=262306, vanilla_item='MS'), - 'MistyAbilityCell': Location(code=262307, vanilla_item='AC'), - 'MistyEntranceStompExp': Location(code=262308, vanilla_item='EX100'), - 'MistyEntranceTreeExp': Location(code=262309, vanilla_item='EX100'), - 'MistyFrogNookExp': Location(code=262310, vanilla_item='EX100'), - 'MistyGrenade': Location(code=262311, vanilla_item='EX200'), - 'MistyKeystone1': Location(code=262312, vanilla_item='KS'), - 'MistyKeystone2': Location(code=262313, vanilla_item='KS'), - 'MistyKeystone3': Location(code=262314, vanilla_item='KS'), - 'MistyKeystone4': Location(code=262315, vanilla_item='KS'), - 'MistyMortarCorridorHiddenExp': Location(code=262316, vanilla_item='EX100'), - 'MistyMortarCorridorUpperExp': Location(code=262317, vanilla_item='EX100'), - 'MistyPlant': Location(code=262318, vanilla_item='Plant'), - 'MistyPostClimbAboveSpikePit': Location(code=262319, vanilla_item='EX200'), - 'MistyPostClimbSpikeCave': Location(code=262320, vanilla_item='EX100'), - 'MoonGrottoStompPlant': Location(code=262321, vanilla_item='Plant'), - 'OuterSwampAbilityCell': Location(code=262322, vanilla_item='AC'), - 'OuterSwampGrenadeExp': Location(code=262323, vanilla_item='EX200'), - 'OuterSwampHealthCell': Location(code=262324, vanilla_item='HC'), - 'OuterSwampMortarAbilityCell': Location(code=262325, vanilla_item='AC'), - 'OuterSwampMortarPlant': Location(code=262326, vanilla_item='Plant'), - 'OuterSwampStompExp': Location(code=262327, vanilla_item='EX100'), - 'OutsideForlornCliffExp': Location(code=262328, vanilla_item='EX200'), - 'OutsideForlornTreeExp': Location(code=262329, vanilla_item='EX100'), - 'OutsideForlornWaterExp': Location(code=262330, vanilla_item='EX100'), - 'RazielNo': Location(code=262331, vanilla_item='EX100'), - 'RightForlornHealthCell': Location(code=262332, vanilla_item='HC'), - 'RightForlornPlant': Location(code=262333, vanilla_item='Plant'), - 'SorrowEntranceAbilityCell': Location(code=262334, vanilla_item='AC'), - 'SorrowHealthCell': Location(code=262335, vanilla_item='HC'), - 'SorrowHiddenKeystone': Location(code=262336, vanilla_item='KS'), - 'SorrowLowerLeftKeystone': Location(code=262337, vanilla_item='KS'), - 'SorrowMainShaftKeystone': Location(code=262338, vanilla_item='KS'), - 'SorrowMap': Location(code=262339, vanilla_item='MapStone'), - 'SorrowMapstone': Location(code=262340, vanilla_item='MS'), - 'SorrowSpikeKeystone': Location(code=262341, vanilla_item='KS'), - 'SpiderSacEnergyCell': Location(code=262342, vanilla_item='EC'), - 'SpiderSacEnergyDoor': Location(code=262343, vanilla_item='AC'), - 'SpiderSacGrenadeDoor': Location(code=262344, vanilla_item='AC'), - 'SpiderSacHealthCell': Location(code=262345, vanilla_item='HC'), - 'SpiritCavernsAbilityCell': Location(code=262346, vanilla_item='AC'), - 'SpiritCavernsKeystone1': Location(code=262347, vanilla_item='KS'), - 'SpiritCavernsKeystone2': Location(code=262348, vanilla_item='KS'), - 'SpiritCavernsTopLeftKeystone': Location(code=262349, vanilla_item='KS'), - 'SpiritCavernsTopRightKeystone': Location(code=262350, vanilla_item='KS'), - 'StompAreaExp': Location(code=262351, vanilla_item='EX100'), - 'StompAreaGrenadeExp': Location(code=262352, vanilla_item='EX200'), - 'StompAreaRoofExp': Location(code=262353, vanilla_item='EX200'), - 'StompSkillTree': Location(code=262354, vanilla_item='SKStomp'), - 'Sunstone': Location(code=262355, vanilla_item='EVHoruKey'), - 'SunstonePlant': Location(code=262356, vanilla_item='Plant'), - 'SwampEntranceAbilityCell': Location(code=262357, vanilla_item='AC'), - 'SwampEntrancePlant': Location(code=262358, vanilla_item='Plant'), - 'SwampEntranceSwim': Location(code=262359, vanilla_item='EX200'), - 'SwampMap': Location(code=262360, vanilla_item='MapStone'), - 'SwampTeleporterAbilityCell': Location(code=262361, vanilla_item='AC'), - 'TopGinsoLeftLowerExp': Location(code=262362, vanilla_item='EX100'), - 'TopGinsoLeftUpperExp': Location(code=262363, vanilla_item='EX100'), - 'TopGinsoRightPlant': Location(code=262364, vanilla_item='Plant'), - 'UpperGinsoEnergyCell': Location(code=262365, vanilla_item='EC'), - 'UpperGinsoLowerKeystone': Location(code=262366, vanilla_item='KS'), - 'UpperGinsoRedirectLowerExp': Location(code=262367, vanilla_item='EX100'), - 'UpperGinsoRedirectUpperExp': Location(code=262368, vanilla_item='EX100'), - 'UpperGinsoRightKeystone': Location(code=262369, vanilla_item='KS'), - 'UpperGinsoUpperLeftKeystone': Location(code=262370, vanilla_item='KS'), - 'UpperGinsoUpperRightKeystone': Location(code=262371, vanilla_item='KS'), - 'UpperSorrowFarLeftKeystone': Location(code=262372, vanilla_item='KS'), - 'UpperSorrowFarRightKeystone': Location(code=262373, vanilla_item='KS'), - 'UpperSorrowLeftKeystone': Location(code=262374, vanilla_item='KS'), - 'UpperSorrowRightKeystone': Location(code=262375, vanilla_item='KS'), - 'UpperSorrowSpikeExp': Location(code=262376, vanilla_item='EX100'), - 'ValleyEntryAbilityCell': Location(code=262377, vanilla_item='AC'), - 'ValleyEntryGrenadeLongSwim': Location(code=262378, vanilla_item='EC'), - 'ValleyEntryTreeExp': Location(code=262379, vanilla_item='EX100'), - 'ValleyEntryTreePlant': Location(code=262380, vanilla_item='Plant'), - 'ValleyForlornApproachGrenade': Location(code=262381, vanilla_item='AC'), - 'ValleyForlornApproachMapstone': Location(code=262382, vanilla_item='MS'), - 'ValleyMainFACS': Location(code=262383, vanilla_item='AC'), - 'ValleyMainPlant': Location(code=262384, vanilla_item='Plant'), - 'ValleyMap': Location(code=262385, vanilla_item='MapStone'), - 'ValleyRightBirdStompCell': Location(code=262386, vanilla_item='AC'), - 'ValleyRightExp': Location(code=262387, vanilla_item='EX100'), - 'ValleyRightFastStomplessCell': Location(code=262388, vanilla_item='AC'), - 'ValleyRightSwimExp': Location(code=262389, vanilla_item='EX100'), - 'ValleyThreeBirdAbilityCell': Location(code=262390, vanilla_item='AC'), - 'WallJumpAreaEnergyCell': Location(code=262391, vanilla_item='EC'), - 'WallJumpAreaExp': Location(code=262392, vanilla_item='EX200'), - 'WallJumpSkillTree': Location(code=262393, vanilla_item='SKWallJump'), - 'WaterVein': Location(code=262394, vanilla_item='EVGinsoKey'), - 'WilhelmExp': Location(code=262395, vanilla_item='EX200')} - - - -lookup_name_to_id = {location_name: location_data.code for location_name, location_data in locations_data.items()} \ No newline at end of file diff --git a/worlds_disabled/oribf/Options.py b/worlds_disabled/oribf/Options.py deleted file mode 100644 index ac6808aa8d34..000000000000 --- a/worlds_disabled/oribf/Options.py +++ /dev/null @@ -1,12 +0,0 @@ -from .RulesData import location_rules -from Options import Toggle - - -options = { - "open" : Toggle, - "openworld": Toggle -} - -for logic_set in location_rules: - if logic_set != "casual-core": - options[logic_set.replace("-", "_")] = Toggle diff --git a/worlds_disabled/oribf/README.md b/worlds_disabled/oribf/README.md deleted file mode 100644 index 0c78c23bea0d..000000000000 --- a/worlds_disabled/oribf/README.md +++ /dev/null @@ -1,7 +0,0 @@ -### Ori and the Blind Forest - -This world was disabled for the following reasons: - -* Missing client -* Unmaintained -* Outdated, fails tests as of Jun 29, 2023 diff --git a/worlds_disabled/oribf/Regions.py b/worlds_disabled/oribf/Regions.py deleted file mode 100644 index c86608732cdf..000000000000 --- a/worlds_disabled/oribf/Regions.py +++ /dev/null @@ -1,251 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -locations_by_region = \ - {'AboveChargeJumpArea': {'AboveChargeJumpAbilityCell'}, 'BashTree': {'BashAreaExp', 'BashSkillTree'}, - 'BashTreeDoorClosed': set(), 'BashTreeDoorOpened': set(), 'BelowSunstoneArea': set(), - 'BlackrootDarknessRoom': {'DashAreaOrbRoomExp', 'DashAreaAbilityCell', 'DashAreaRoofExp'}, - 'BlackrootGrottoConnection': {'BlackrootBoulderExp', 'BlackrootMap', 'BlackrootTeleporterHealthCell'}, - 'ChargeFlameAreaPlantAccess': {'ChargeFlameAreaPlant'}, 'ChargeFlameAreaStump': set(), - 'ChargeFlameSkillTreeChamber': {'ChargeFlameSkillTree'}, 'ChargeJumpArea': {'ChargeJumpSkillTree'}, - 'ChargeJumpDoor': set(), 'ChargeJumpDoorOpen': set(), - 'ChargeJumpDoorOpenLeft': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'DashArea': {'DashAreaMapstone', 'DashSkillTree'}, 'DashPlantAccess': {'DashAreaPlant'}, - 'DeathGauntlet': {'DeathGauntletEnergyCell', 'DeathGauntletStompSwim', 'DeathGauntletExp'}, - 'DeathGauntletDoor': set(), 'DeathGauntletDoorOpened': set(), 'DeathGauntletMoat': {'DeathGauntletSwimEnergyDoor'}, - 'DeathGauntletRoof': {'DeathGauntletRoofHealthCell'}, 'DeathGauntletRoofPlantAccess': {'DeathGauntletRoofPlant'}, - 'DoubleJumpKeyDoor': set(), 'DoubleJumpKeyDoorOpened': {'DoubleJumpSkillTree', 'DoubleJumpAreaExp'}, - 'ForlornGravityRoom': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1'}, - 'ForlornInnerDoor': {'ForlornEntranceExp'}, 'ForlornKeyDoor': set(), 'ForlornLaserRoom': {'ForlornEscape'}, - 'ForlornMapArea': {'ForlornMap', 'ForlornKeystone4'}, - 'ForlornOrbPossession': {'ForlornKeystone2', 'ForlornHiddenSpiderExp', 'ForlornKeystone1', 'ForlornKeystone4', - 'ForlornKeystone3'}, 'ForlornOuterDoor': set(), 'ForlornPlantAccess': {'ForlornPlant'}, - 'ForlornStompDoor': set(), 'ForlornTeleporter': {'ForlornKeystone3'}, 'GinsoEscape': set(), - 'GinsoEscapeComplete': {'GinsoEscapeExit', 'GinsoEscapeSpiderExp', 'GinsoEscapeProjectileExp', - 'GinsoEscapeJumpPadExp', 'GinsoEscapeHangingExp'}, 'GinsoInnerDoor': set(), - 'GinsoMiniBossDoor': {'LowerGinsoKeystone2', 'LowerGinsoKeystone1', 'LowerGinsoKeystone3', 'LowerGinsoKeystone4'}, - 'GinsoOuterDoor': set(), 'GinsoTeleporter': set(), 'GladesLaserArea': {'GladesLaserGrenade', 'GladesLaser'}, - 'GladesMain': {'FourthHealthCell', 'GladesMap', 'GladesMapKeystone'}, 'GladesMainAttic': {'AboveFourthHealth'}, - 'GrenadeArea': {'GrenadeAreaAbilityCell', 'GrenadeAreaExp', 'GrenadeSkillTree'}, 'GrenadeAreaAccess': set(), - 'GumoHideout': {'GumoHideoutMapstone', 'GumoHideoutCrusherExp', 'GumoHideoutRightHangingExp', - 'GumoHideoutEnergyCell', 'GumoHideoutCrusherKeystone', 'GumoHideoutMap', 'GumoHideoutMiniboss'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectAbilityCell', 'GumoHideoutRedirectPlant'}, - 'GumoHideoutRedirectEnergyVault': {'GumoHideoutRedirectExp', 'GumoHideoutRedirectEnergyCell'}, - 'HollowGrove': {'GroveWaterStompAbilityCell', 'HollowGroveTreeAbilityCell', 'HollowGroveMapPlant', - 'HoruFieldsHealthCell', 'HollowGroveMap', 'SwampTeleporterAbilityCell', 'HollowGroveMapstone', - 'HollowGroveTreePlant'}, 'HoruBasement': {'DoorWarpExp'}, 'HoruEscapeInnerDoor': set(), - 'HoruEscapeOuterDoor': set(), 'HoruFields': set(), - 'HoruFieldsPushBlock': {'HoruFieldsEnergyCell', 'HoruFieldsPlant', 'HoruFieldsHiddenExp', 'HoruFieldsAbilityCell'}, - 'HoruInnerDoor': {'HoruLavaDrainedLeftExp', 'HoruLavaDrainedRightExp'}, - 'HoruL4CutscenePeg': {'HoruL4', 'HoruL4LowerExp'}, 'HoruL4LavaChasePeg': {'HoruL4ChaseExp'}, - 'HoruMapLedge': {'HoruMap'}, 'HoruOuterDoor': set(), 'HoruR1CutsceneTrigger': {'HoruR1EnergyCell', 'HoruR1'}, - 'HoruR1MapstoneSecret': {'HoruR1Mapstone'}, 'HoruR3CutsceneTrigger': {'HoruR3'}, 'HoruR3ElevatorLever': set(), - 'HoruR3PlantCove': {'HoruR3Plant'}, 'HoruR4CutsceneTrigger': {'HoruR4DrainedExp', 'HoruR4'}, - 'HoruR4PuzzleEntrance': {'HoruR4LaserExp'}, 'HoruR4StompHideout': {'HoruR4StompExp'}, - 'HoruTeleporter': {'HoruTeleporterExp'}, 'Iceless': {'IcelessExp'}, 'InnerSwampAboveDrainArea': set(), - 'InnerSwampDrainBroken': {'InnerSwampDrainExp'}, 'InnerSwampSkyArea': {'InnerSwampEnergyCell'}, 'L1': {'HoruL1'}, - 'L1InnerDoor': set(), 'L1OuterDoor': set(), 'L2': {'HoruL2'}, 'L2InnerDoor': set(), 'L2OuterDoor': set(), - 'L3': {'HoruL3'}, 'L3InnerDoor': set(), 'L3OuterDoor': set(), 'L4': set(), 'L4InnerDoor': set(), - 'L4OuterDoor': {'HoruLavaDrainedLeftExp'}, - 'LeftGlades': {'WallJumpAreaEnergyCell', 'LeftGladesHiddenExp', 'WallJumpAreaExp', 'WallJumpSkillTree'}, - 'LeftGumoHideout': {'FarLeftGumoHideoutExp', 'LeftGumoHideoutUpperPlant'}, - 'LeftSorrow': {'LeftSorrowAbilityCell', 'LeftSorrowPlant', 'LeftSorrowGrenade'}, - 'LeftSorrowKeystones': {'LeftSorrowEnergyCell', 'LeftSorrowKeystone1', 'LeftSorrowKeystone2', - 'LeftSorrowKeystone4', 'LeftSorrowKeystone3'}, 'LeftSorrowLowerDoor': set(), - 'LeftSorrowMiddleDoor': set(), 'LostGrove': {'LostGroveLongSwim'}, - 'LostGroveExit': {'LostGroveTeleporter', 'LostGroveAbilityCell', 'LostGroveHiddenExp'}, - 'LowerBlackroot': {'LowerBlackrootAbilityCell', 'LowerBlackrootLaserAbilityCell', 'LowerBlackrootGrenadeThrow', - 'LowerBlackrootLaserExp'}, 'LowerChargeFlameArea': {'ChargeFlameAreaExp'}, - 'LowerGinsoTree': {'LowerGinsoPlant', 'LowerGinsoHiddenExp'}, - 'LowerLeftGumoHideout': {'LeftGumoHideoutSwim', 'LeftGumoHideoutHealthCell', 'LeftGumoHideoutExp', - 'GumoHideoutLeftHangingExp', 'GumoHideoutRightHangingExp', 'LeftGumoHideoutLowerPlant'}, - 'LowerSorrow': {'SorrowLowerLeftKeystone', 'SorrowHiddenKeystone', 'SorrowEntranceAbilityCell', 'SorrowHealthCell', - 'SorrowSpikeKeystone'}, - 'LowerSpiritCaverns': {'SpiritCavernsKeystone1', 'SpiritCavernsAbilityCell', 'SpiritCavernsKeystone2'}, - 'LowerValley': {'LowerValleyExp', 'LowerValleyMapstone', 'KuroPerchExp'}, - 'LowerValleyPlantApproach': {'ValleyMainPlant'}, 'MidSpiritCaverns': set(), 'MiddleSorrow': set(), - 'MistyAbove200xp': {'MistyGrenade'}, 'MistyBeforeDocks': set(), 'MistyBeforeMiniBoss': set(), - 'MistyEntrance': {'MistyEntranceStompExp', 'MistyEntranceTreeExp'}, 'MistyKeystone3Ledge': {'MistyKeystone3'}, - 'MistyKeystone4Ledge': {'MistyKeystone4'}, 'MistyMortarSpikeCave': {'MistyPostClimbAboveSpikePit'}, - 'MistyOrbRoom': {'GumonSeal'}, 'MistyPostClimb': set(), - 'MistyPostFeatherTutorial': {'MistyFrogNookExp', 'MistyKeystone1'}, 'MistyPostKeystone1': set(), - 'MistyPostLasers': {'MistyPostClimbSpikeCave'}, 'MistyPostMortarCorridor': set(), - 'MistyPreClimb': {'ClimbSkillTree'}, 'MistyPreKeystone2': {'MistyKeystone2', 'MistyAbilityCell'}, - 'MistyPreLasers': set(), 'MistyPreMortarCorridor': {'MistyMortarCorridorUpperExp', 'MistyMortarCorridorHiddenExp'}, - 'MistyPrePlantLedge': {'MistyPlant'}, 'MistySpikeCave': set(), - 'MoonGrotto': {'GrottoEnergyDoorHealthCell', 'GrottoEnergyDoorSwim'}, - 'MoonGrottoAboveTeleporter': {'LeftGrottoTeleporterExp', 'AboveGrottoTeleporterExp'}, - 'MoonGrottoBelowTeleporter': {'BelowGrottoTeleporterPlant', 'BelowGrottoTeleporterHealthCell'}, - 'MoonGrottoStompPlantAccess': {'MoonGrottoStompPlant'}, - 'MoonGrottoSwampAccessArea': {'GrottoSwampDrainAccessExp', 'GrottoSwampDrainAccessPlant'}, - 'OuterSwampAbilityCellNook': {'OuterSwampAbilityCell'}, - 'OuterSwampLowerArea': {'OuterSwampHealthCell', 'OuterSwampStompExp'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarAbilityCell'}, - 'OuterSwampMortarPlantAccess': {'OuterSwampMortarPlant'}, 'OuterSwampUpperArea': {'OuterSwampGrenadeExp'}, - 'OutsideForlorn': {'OutsideForlornTreeExp', 'OutsideForlornWaterExp'}, - 'OutsideForlornCliff': {'OutsideForlornCliffExp'}, 'R1': {'HoruR1HangingExp'}, 'R1InnerDoor': set(), - 'R1OuterDoor': set(), 'R2': {'HoruR2'}, 'R2InnerDoor': set(), 'R2OuterDoor': set(), 'R3': set(), - 'R3InnerDoor': set(), 'R3OuterDoor': set(), 'R4': {'HoruR4DrainedExp'}, 'R4InnerDoor': set(), - 'R4OuterDoor': {'HoruLavaDrainedRightExp'}, 'RazielNoArea': {'RazielNo'}, - 'RightForlorn': {'RightForlornPlant', 'RightForlornHealthCell'}, - 'RightSwamp': {'StompAreaGrenadeExp', 'StompSkillTree', 'StompAreaExp', 'StompAreaRoofExp'}, - 'SideFallCell': {'GrottoHideoutFallAbilityCell'}, 'SorrowBashLedge': set(), - 'SorrowMainShaftKeystoneArea': {'SorrowMainShaftKeystone'}, 'SorrowMapstoneArea': {'SorrowMap', 'SorrowMapstone'}, - 'SorrowTeleporter': set(), 'SpiderSacArea': {'AboveChargeFlameTreeExp'}, - 'SpiderSacEnergyNook': {'SpiderSacEnergyCell'}, - 'SpiderSacTetherArea': {'SpiderSacGrenadeDoor', 'SpiderSacEnergyDoor', 'SpiderSacHealthCell'}, - 'SpiderWaterArea': {'GroveSpiderWaterSwim', 'GroveAboveSpiderWaterEnergyCell', 'GroveAboveSpiderWaterExp', - 'GroveAboveSpiderWaterHealthCell'}, 'SpiritCavernsDoor': set(), - 'SpiritCavernsDoorOpened': set(), 'SpiritTreeDoor': set(), 'SpiritTreeDoorOpened': set(), - 'SpiritTreeRefined': {'AboveChargeFlameTreeExp'}, - 'SunkenGladesRunaway': {'FronkeyWalkRoof', 'GladesGrenadePool', 'GladesMainPoolDeep', 'FirstPickup', - 'FronkeyFight', 'GladesMainPool', 'GladesKeystone1', 'GladesGrenadeTree', - 'GladesKeystone2'}, 'SunstoneArea': {'Sunstone', 'SunstonePlant'}, - 'Swamp': {'InnerSwampDrainExp', 'SwampMap'}, 'SwampDrainlessArea': {'SwampEntranceAbilityCell'}, - 'SwampEntryArea': {'SwampEntrancePlant', 'SwampEntranceSwim'}, 'SwampKeyDoorOpened': set(), - 'SwampKeyDoorPlatform': {'InnerSwampStompExp'}, 'SwampTeleporter': set(), - 'SwampWater': {'InnerSwampSwimRightKeystone', 'InnerSwampSwimMapstone', 'InnerSwampHiddenSwimExp', - 'InnerSwampSwimLeftKeystone'}, - 'TopGinsoTree': {'TopGinsoLeftLowerExp', 'TopGinsoLeftUpperExp', 'TopGinsoRightPlant'}, - 'UpperGinsoDoorClosed': set(), 'UpperGinsoDoorOpened': set(), - 'UpperGinsoRedirectArea': {'BashAreaExp', 'UpperGinsoRedirectUpperExp', 'UpperGinsoRedirectLowerExp'}, - 'UpperGinsoTree': {'UpperGinsoUpperLeftKeystone', 'UpperGinsoLowerKeystone', 'UpperGinsoRightKeystone', - 'UpperGinsoUpperRightKeystone', 'UpperGinsoEnergyCell'}, 'UpperGrotto': {'GrottoLasersRoofExp'}, - 'UpperLeftGlades': {'LeftGladesKeystone', 'LeftGladesExp', 'LeftGladesMapstone'}, - 'UpperSorrow': {'UpperSorrowSpikeExp', 'UpperSorrowRightKeystone', 'UpperSorrowLeftKeystone', - 'UpperSorrowFarRightKeystone', 'UpperSorrowFarLeftKeystone'}, - 'UpperSpiritCaverns': {'SpiritCavernsTopRightKeystone', 'SpiritCavernsTopLeftKeystone'}, - 'ValleyEntry': {'ValleyEntryAbilityCell', 'ValleyThreeBirdAbilityCell'}, - 'ValleyEntryTree': {'ValleyEntryTreeExp', 'ValleyEntryGrenadeLongSwim'}, - 'ValleyEntryTreePlantAccess': {'ValleyEntryTreePlant'}, - 'ValleyForlornApproach': {'ValleyMap', 'ValleyForlornApproachGrenade', 'ValleyForlornApproachMapstone'}, - 'ValleyMain': {'GlideSkillFeather', 'KuroPerchExp'}, 'ValleyPostStompDoor': {'ValleyRightSwimExp'}, - 'ValleyRight': set(), 'ValleyStompFloor': set(), 'ValleyStompless': {'KuroPerchExp'}, - 'ValleyStomplessApproach': {'ValleyRightFastStomplessCell', 'ValleyRightBirdStompCell', 'ValleyRightExp'}, - 'ValleyTeleporter': set(), 'ValleyThreeBirdLever': {'ValleyThreeBirdAbilityCell', 'ValleyMainFACS'}, - 'WaterVeinArea': {'WaterVein', 'GumoHideoutRockfallExp'}, 'WilhelmLedge': {'WilhelmExp', 'KuroPerchExp'}} - -connectors = \ - {'AboveChargeJumpArea': {'SorrowTeleporter', 'ChargeJumpArea'}, - 'BashTree': {'BashTreeDoorClosed', 'UpperGinsoRedirectArea'}, 'BashTreeDoorClosed': {'BashTreeDoorOpened'}, - 'BashTreeDoorOpened': {'GinsoMiniBossDoor', 'BashTree'}, 'BelowSunstoneArea': {'SunstoneArea', 'UpperSorrow'}, - 'BlackrootDarknessRoom': {'DashArea'}, 'BlackrootGrottoConnection': {'SideFallCell'}, - 'ChargeFlameAreaStump': {'LowerChargeFlameArea', 'ChargeFlameSkillTreeChamber', 'ChargeFlameAreaPlantAccess'}, - 'ChargeFlameSkillTreeChamber': {'SpiritTreeRefined', 'ChargeFlameAreaStump'}, - 'ChargeJumpArea': {'AboveChargeJumpArea', 'ChargeJumpDoor'}, 'ChargeJumpDoor': {'ChargeJumpDoorOpen'}, - 'ChargeJumpDoorOpen': {'ChargeJumpDoorOpenLeft', 'ChargeJumpArea'}, 'ChargeJumpDoorOpenLeft': {'UpperSorrow'}, - 'DashArea': {'RazielNoArea', 'GrenadeAreaAccess', 'DashPlantAccess'}, - 'DeathGauntlet': {'DeathGauntletRoofPlantAccess', 'MoonGrotto', 'DeathGauntletMoat', 'MoonGrottoAboveTeleporter', - 'DeathGauntletRoof', 'DeathGauntletDoor'}, 'DeathGauntletDoor': {'DeathGauntletDoorOpened'}, - 'DeathGauntletDoorOpened': {'SunkenGladesRunaway', 'DeathGauntlet', 'DeathGauntletMoat'}, - 'DeathGauntletRoof': {'DeathGauntlet', 'DeathGauntletRoofPlantAccess'}, - 'DoubleJumpKeyDoor': {'DoubleJumpKeyDoorOpened'}, 'ForlornGravityRoom': {'ForlornMapArea', 'ForlornInnerDoor'}, - 'ForlornInnerDoor': {'ForlornGravityRoom', 'ForlornOrbPossession', 'ForlornOuterDoor'}, - 'ForlornKeyDoor': {'ForlornLaserRoom'}, 'ForlornLaserRoom': {'ForlornStompDoor'}, - 'ForlornMapArea': {'ForlornGravityRoom', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornTeleporter'}, - 'ForlornOrbPossession': {'ForlornMapArea', 'ForlornKeyDoor', 'ForlornPlantAccess', 'ForlornInnerDoor'}, - 'ForlornOuterDoor': {'OutsideForlorn', 'ForlornInnerDoor'}, 'ForlornStompDoor': {'RightForlorn'}, - 'ForlornTeleporter': {'ForlornMapArea', 'ForlornGravityRoom', 'ForlornOrbPossession'}, - 'GinsoEscape': {'GinsoEscapeComplete'}, 'GinsoEscapeComplete': {'Swamp'}, 'GinsoInnerDoor': {'LowerGinsoTree'}, - 'GinsoMiniBossDoor': {'BashTreeDoorClosed'}, 'GinsoOuterDoor': {'GinsoInnerDoor'}, - 'GinsoTeleporter': {'UpperGinsoDoorClosed', 'TopGinsoTree'}, 'GladesLaserArea': {'MidSpiritCaverns', 'GladesMain'}, - 'GladesMain': {'LeftGlades', 'SpiritCavernsDoor', 'LowerChargeFlameArea', 'GladesMainAttic', 'GladesLaserArea'}, - 'GladesMainAttic': {'LowerChargeFlameArea', 'GladesMain'}, 'GrenadeAreaAccess': {'LowerBlackroot', 'GrenadeArea'}, - 'GumoHideout': {'SideFallCell', 'LeftGumoHideout', 'LowerLeftGumoHideout', 'DoubleJumpKeyDoor'}, - 'GumoHideoutRedirectArea': {'GumoHideoutRedirectEnergyVault'}, - 'HollowGrove': {'MoonGrottoStompPlantAccess', 'Iceless', 'SwampTeleporter', 'SpiderWaterArea', 'HoruFields', - 'OuterSwampUpperArea'}, 'HoruBasement': {'HoruEscapeOuterDoor'}, - 'HoruEscapeOuterDoor': {'HoruEscapeInnerDoor'}, 'HoruFields': {'HoruOuterDoor', 'HoruFieldsPushBlock'}, - 'HoruFieldsPushBlock': {'HollowGrove'}, - 'HoruInnerDoor': {'HoruBasement', 'R2OuterDoor', 'HoruMapLedge', 'L1OuterDoor', 'L2OuterDoor', 'HoruTeleporter', - 'L3OuterDoor', 'R1OuterDoor', 'R4OuterDoor', 'HoruOuterDoor', 'L4OuterDoor', 'R3OuterDoor'}, - 'HoruL4LavaChasePeg': {'HoruL4CutscenePeg'}, 'HoruOuterDoor': {'HoruFieldsPushBlock', 'HoruInnerDoor'}, - 'HoruR1CutsceneTrigger': {'LowerGinsoTree'}, 'HoruR1MapstoneSecret': {'HoruR1CutsceneTrigger'}, - 'HoruR3CutsceneTrigger': {'HoruR3PlantCove'}, 'HoruR3ElevatorLever': {'HoruR3PlantCove', 'HoruR3CutsceneTrigger'}, - 'HoruR4PuzzleEntrance': {'HoruR4CutsceneTrigger'}, - 'HoruR4StompHideout': {'HoruR4CutsceneTrigger', 'HoruR4PuzzleEntrance'}, 'HoruTeleporter': {'HoruInnerDoor'}, - 'Iceless': {'HollowGrove', 'UpperGrotto'}, 'InnerSwampAboveDrainArea': {'InnerSwampDrainBroken'}, - 'InnerSwampDrainBroken': {'Swamp'}, 'InnerSwampSkyArea': {'SwampKeyDoorPlatform', 'Swamp'}, 'L1InnerDoor': {'L1'}, - 'L1OuterDoor': {'L1InnerDoor', 'HoruInnerDoor'}, 'L2InnerDoor': {'L2'}, - 'L2OuterDoor': {'L2InnerDoor', 'HoruInnerDoor'}, 'L3InnerDoor': {'L3'}, - 'L3OuterDoor': {'L3InnerDoor', 'HoruInnerDoor'}, 'L4': {'HoruL4CutscenePeg', 'HoruL4LavaChasePeg'}, - 'L4InnerDoor': {'L4'}, 'L4OuterDoor': {'L4InnerDoor', 'HoruInnerDoor'}, - 'LeftGlades': {'UpperLeftGlades', 'GladesMain'}, 'LeftGumoHideout': {'WaterVeinArea', 'LowerLeftGumoHideout'}, - 'LeftSorrow': {'LeftSorrowKeystones'}, 'LeftSorrowKeystones': {'LeftSorrowMiddleDoor', 'MiddleSorrow'}, - 'LeftSorrowLowerDoor': {'LeftSorrow'}, 'LeftSorrowMiddleDoor': {'MiddleSorrow'}, 'LostGrove': {'LostGroveExit'}, - 'LowerBlackroot': {'LostGrove'}, 'LowerChargeFlameArea': {'ChargeFlameAreaStump', 'GladesMain'}, - 'LowerGinsoTree': {'R4InnerDoor', 'GinsoMiniBossDoor'}, - 'LowerLeftGumoHideout': {'LowerBlackroot', 'GumoHideoutRedirectArea'}, - 'LowerSorrow': {'SorrowMainShaftKeystoneArea', 'SorrowMapstoneArea', 'LeftSorrowLowerDoor', 'LeftSorrow', - 'SunstoneArea', 'WilhelmLedge', 'MiddleSorrow'}, - 'LowerSpiritCaverns': {'SpiritCavernsDoor', 'MidSpiritCaverns', 'GladesLaserArea'}, - 'LowerValley': {'ValleyThreeBirdLever', 'LowerValleyPlantApproach', 'ValleyTeleporter', 'MistyEntrance'}, - 'MidSpiritCaverns': {'UpperSpiritCaverns', 'LowerSpiritCaverns', 'GladesLaserArea'}, - 'MiddleSorrow': {'SorrowMainShaftKeystoneArea', 'LeftSorrowKeystones', 'LeftSorrow', 'LowerSorrow', 'UpperSorrow', - 'SunstoneArea'}, 'MistyAbove200xp': {'MistyBeforeMiniBoss'}, - 'MistyBeforeDocks': {'MistyAbove200xp'}, 'MistyBeforeMiniBoss': {'MistyOrbRoom'}, - 'MistyEntrance': {'MistyPostFeatherTutorial'}, 'MistyKeystone3Ledge': {'MistyPreLasers'}, - 'MistyKeystone4Ledge': {'MistyBeforeDocks'}, 'MistyMortarSpikeCave': {'MistyKeystone4Ledge'}, - 'MistyOrbRoom': {'MistyPreKeystone2'}, 'MistyPostClimb': {'MistySpikeCave'}, - 'MistyPostFeatherTutorial': {'MistyPostKeystone1'}, 'MistyPostKeystone1': {'MistyPreMortarCorridor'}, - 'MistyPostLasers': {'MistyMortarSpikeCave'}, 'MistyPostMortarCorridor': {'MistyPrePlantLedge'}, - 'MistyPreClimb': {'MistyPostClimb', 'ForlornTeleporter', 'RightForlorn'}, 'MistyPreLasers': {'MistyPostLasers'}, - 'MistyPreMortarCorridor': {'MistyPostMortarCorridor', 'RightForlorn'}, 'MistyPrePlantLedge': {'MistyPreClimb'}, - 'MistySpikeCave': {'MistyKeystone3Ledge'}, - 'MoonGrotto': {'MoonGrottoBelowTeleporter', 'MoonGrottoAboveTeleporter', 'WaterVeinArea', 'DeathGauntlet', - 'GumoHideout'}, - 'MoonGrottoAboveTeleporter': {'MoonGrottoSwampAccessArea', 'MoonGrottoBelowTeleporter', - 'MoonGrottoStompPlantAccess', 'MoonGrotto', 'DeathGauntletRoof', 'UpperGrotto'}, - 'MoonGrottoSwampAccessArea': {'InnerSwampAboveDrainArea'}, 'OuterSwampAbilityCellNook': {'InnerSwampSkyArea'}, - 'OuterSwampLowerArea': {'OuterSwampAbilityCellNook', 'OuterSwampMortarPlantAccess', 'SwampEntryArea', - 'OuterSwampMortarAbilityCellLedge', 'UpperGrotto', 'OuterSwampUpperArea'}, - 'OuterSwampMortarAbilityCellLedge': {'OuterSwampMortarPlantAccess', 'UpperGrotto'}, - 'OuterSwampUpperArea': {'OuterSwampLowerArea', 'OuterSwampAbilityCellNook', 'GinsoOuterDoor'}, - 'OutsideForlorn': {'OutsideForlornCliff', 'RightForlorn', 'ForlornOuterDoor'}, - 'OutsideForlornCliff': {'OutsideForlorn', 'ValleyForlornApproach'}, 'R1': {'HoruR1MapstoneSecret'}, - 'R1InnerDoor': {'R1'}, 'R1OuterDoor': {'R1InnerDoor', 'L1OuterDoor'}, 'R2InnerDoor': {'R2'}, - 'R2OuterDoor': {'R2InnerDoor', 'HoruInnerDoor'}, 'R3': {'HoruR3ElevatorLever'}, 'R3InnerDoor': {'R3'}, - 'R3OuterDoor': {'R3InnerDoor', 'HoruInnerDoor'}, 'R4': {'HoruR4StompHideout'}, 'R4InnerDoor': {'R4'}, - 'R4OuterDoor': {'R4InnerDoor', 'HoruInnerDoor'}, 'RazielNoArea': {'GumoHideout', 'BlackrootGrottoConnection'}, - 'SideFallCell': {'LeftGumoHideout', 'GumoHideout'}, 'SorrowBashLedge': {'LowerSorrow'}, - 'SorrowMainShaftKeystoneArea': {'LowerSorrow'}, 'SorrowMapstoneArea': {'HoruInnerDoor'}, - 'SorrowTeleporter': {'AboveChargeJumpArea', 'BelowSunstoneArea'}, - 'SpiderSacArea': {'SpiritTreeRefined', 'SpiderWaterArea', 'SpiderSacTetherArea', 'SpiderSacEnergyNook'}, - 'SpiderSacEnergyNook': {'ChargeFlameAreaPlantAccess'}, - 'SpiderSacTetherArea': {'SpiderWaterArea', 'SpiderSacEnergyNook'}, - 'SpiderWaterArea': {'HollowGrove', 'DeathGauntletRoof', 'SpiderSacEnergyNook', 'SpiderSacArea'}, - 'SpiritCavernsDoor': {'SpiritCavernsDoorOpened'}, 'SpiritCavernsDoorOpened': {'LowerSpiritCaverns', 'GladesMain'}, - 'SpiritTreeDoor': {'SpiritTreeDoorOpened'}, 'SpiritTreeDoorOpened': {'SpiritTreeRefined', 'UpperSpiritCaverns'}, - 'SpiritTreeRefined': {'ChargeFlameAreaStump', 'SpiritTreeDoor', 'ChargeFlameSkillTreeChamber', 'ValleyEntry', - 'SpiderSacArea'}, - 'SunkenGladesRunaway': {'MoonGrotto', 'LowerChargeFlameArea', 'ValleyTeleporter', 'SorrowTeleporter', - 'HoruTeleporter', 'GladesMain', 'GinsoTeleporter', 'SwampTeleporter', 'SpiritTreeRefined', - 'BlackrootDarknessRoom', 'DeathGauntletDoor', 'ForlornTeleporter'}, - 'SunstoneArea': {'SorrowTeleporter', 'UpperSorrow'}, - 'Swamp': {'SwampKeyDoorPlatform', 'SwampDrainlessArea', 'SwampWater'}, - 'SwampEntryArea': {'SwampDrainlessArea', 'Swamp'}, 'SwampKeyDoorOpened': {'RightSwamp'}, - 'SwampKeyDoorPlatform': {'SwampKeyDoorOpened', 'InnerSwampSkyArea'}, - 'SwampTeleporter': {'HollowGrove', 'OuterSwampMortarAbilityCellLedge'}, 'TopGinsoTree': {'GinsoEscape'}, - 'UpperGinsoDoorClosed': {'UpperGinsoDoorOpened'}, 'UpperGinsoDoorOpened': {'GinsoTeleporter', 'UpperGinsoTree'}, - 'UpperGinsoRedirectArea': {'UpperGinsoTree', 'BashTree'}, - 'UpperGinsoTree': {'UpperGinsoDoorClosed', 'UpperGinsoRedirectArea'}, - 'UpperGrotto': {'MoonGrottoStompPlantAccess', 'Iceless', 'MoonGrottoAboveTeleporter', - 'OuterSwampMortarAbilityCellLedge', 'OuterSwampLowerArea'}, 'UpperLeftGlades': {'LeftGlades'}, - 'UpperSorrow': {'SunstoneArea', 'MiddleSorrow', 'SorrowTeleporter', 'ChargeJumpDoor'}, - 'UpperSpiritCaverns': {'SpiritTreeDoor', 'MidSpiritCaverns'}, - 'ValleyEntry': {'ValleyThreeBirdLever', 'ValleyStompFloor', 'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess', - 'ValleyEntryTree', 'SpiritTreeRefined'}, - 'ValleyEntryTree': {'ValleyPostStompDoor', 'ValleyEntryTreePlantAccess'}, - 'ValleyForlornApproach': {'ValleyStompFloor', 'OutsideForlornCliff'}, - 'ValleyMain': {'LowerValleyPlantApproach', 'LowerValley', 'MistyEntrance', 'WilhelmLedge', 'ValleyStompless'}, - 'ValleyPostStompDoor': {'ValleyEntry', 'ValleyRight', 'ValleyEntryTree'}, - 'ValleyRight': {'ValleyPostStompDoor', 'ValleyStomplessApproach'}, - 'ValleyStompFloor': {'ValleyThreeBirdLever', 'ValleyEntry', 'ValleyForlornApproach'}, - 'ValleyStompless': {'LowerValleyPlantApproach', 'ValleyMain', 'LowerValley', 'WilhelmLedge', 'MistyEntrance', - 'ValleyStomplessApproach'}, 'ValleyStomplessApproach': {'ValleyRight', 'ValleyStompless'}, - 'ValleyTeleporter': {'LowerValleyPlantApproach', 'ValleyRight', 'ValleyPostStompDoor', 'LowerValley', - 'MistyEntrance', 'ValleyStompless'}, - 'ValleyThreeBirdLever': {'ValleyStompFloor', 'ValleyEntry', 'LowerValley'}, - 'WaterVeinArea': {'MoonGrotto', 'LeftGumoHideout', 'LowerLeftGumoHideout'}, - 'WilhelmLedge': {'ValleyMain', 'SorrowBashLedge', 'ValleyStompless'}} diff --git a/worlds_disabled/oribf/Rules.py b/worlds_disabled/oribf/Rules.py deleted file mode 100644 index e59bc6412fe4..000000000000 --- a/worlds_disabled/oribf/Rules.py +++ /dev/null @@ -1,59 +0,0 @@ -from typing import Set - -from .RulesData import location_rules -from worlds.generic.Rules import set_rule -from BaseClasses import Location, CollectionState - - -# TODO: implement Mapstone counting, Open, OpenWorld, connection rules - -def oribf_has_all(state: CollectionState, items: Set[str], player:int) -> bool: - return all(state.prog_items[item, player] if type(item) == str - else state.prog_items[item[0], player] >= item[1] for item in items) - -def set_rules(world): - temp_base_rule(world.multiworld, world.player) - for logicset in world.logic_sets: - apply_or_ruleset(world.multiworld, world.player, logicset) - - -def tautology(state): - return True - - -def add_or_rule_check_first(world, location: str, player: int, conditionsets): - location = world.get_location(location, player) - for set in conditionsets: - if "Free" in set: - location.access_rule = tautology - return - rule = lambda state, conditionsets=conditionsets: any( - oribf_has_all(state, conditionset, player) for conditionset in conditionsets) - if location.access_rule is Location.access_rule: - location.access_rule = rule - else: - old_rule = location.access_rule - location.access_rule = lambda state: rule(state) or old_rule(state) - - -def temp_base_rule(world, player): - world.completion_condition[player] = lambda state: oribf_has_all(state, - {"Bash", "ChargeFlame", "ChargeJump", "Climb", "Dash", "DoubleJump", "Glide", "Grenade", "Stomp", "WallJump"}, - player) - - -def base_rule(world, player): - if world.logic[player] != 'nologic': - # Victory gets placed on Escaped Horu Event - world.completion_condition[player] = lambda state: state.has('Victory', player) - # Events - # Also add: can complete goal - set_rule(world.get_location("Escaped Horu", player), - lambda state: state.can_reach("HoruEscapeInnerDoor", player) - and state.has_any({"Dash", "Stomp", "ChargeJump", "ChargeFlame"}, player)) - - -def apply_or_ruleset(world, player, rulesetname): - rules = location_rules[rulesetname] - for location, conditionsets in rules.items(): - add_or_rule_check_first(world, location, player, conditionsets) diff --git a/worlds_disabled/oribf/RulesData.py b/worlds_disabled/oribf/RulesData.py deleted file mode 100644 index 11a51c07637d..000000000000 --- a/worlds_disabled/oribf/RulesData.py +++ /dev/null @@ -1,6 +0,0 @@ -# generated by https://github.com/Berserker66/ori_rando_server -# do not edit manually - -# Rules from areas.ori -location_rules = {'casual-core': {'AboveChargeJumpAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'BashSkillTree': {frozenset({'GinsoKey'})}, 'BashAreaExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'ChargeJump'})}, 'DashAreaOrbRoomExp': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaAbilityCell': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DashAreaRoofExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'BlackrootBoulderExp': {frozenset({'Stomp'})}, 'BlackrootMap': {frozenset({'MapStone', 'ChargeJump'}), frozenset({'Climb', 'MapStone', 'DoubleJump'}), frozenset({'MapStone', 'WallJump'}), frozenset({'Grenade', 'Bash', 'MapStone'})}, 'ChargeFlameAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DashAreaMapstone': {frozenset({'Dash'})}, 'DashAreaPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DeathGauntletExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletStompSwim': {frozenset({'Stomp', 'Water'})}, 'DeathGauntletEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DeathGauntletSwimEnergyDoor': {frozenset({('EC', 4)})}, 'DeathGauntletRoofPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'DoubleJumpSkillTree': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Bash', 'WallJump', 'Water'}), frozenset({'ChargeJump', 'WallJump', 'Water'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey', 'Bash'})}, 'ForlornKeystone1': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'DoubleJump', 'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'ForlornKey'}), frozenset({'Climb', 'ForlornKey', 'Glide', 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'Grenade', 'ForlornKey', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'Open'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'}), frozenset({'ForlornKey', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'WallJump', 'Open'}), frozenset({'ForlornKey', 'DoubleJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'DoubleJump'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Open'})}, 'ForlornEscape': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'ForlornMap': {frozenset({'ForlornKey', 'MapStone'})}, 'ForlornKeystone4': {frozenset({'ForlornKey'}), frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'})}, 'ForlornKeystone3': {frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'}), frozenset({'Glide', 'ForlornKey', 'ChargeJump'}), frozenset({'ForlornKey'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'ForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LowerGinsoKeystone1': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone2': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'LowerGinsoKeystone3': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LowerGinsoKeystone4': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GladesLaser': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'GladesMap': {frozenset({'MapStone'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Dash'}), frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Dash', 'Glide'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Dash', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Grenade', 'Dash', 'ChargeJump'})}, 'GumoHideoutMap': {frozenset({'MapStone'})}, 'GumoHideoutRightHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'GumoHideoutMapstone': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'DoubleJump'})}, 'GumoHideoutMiniboss': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutEnergyCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'GumoHideoutRedirectPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Climb', 'Grenade'})}, 'GumoHideoutRedirectEnergyCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GumoHideoutRedirectExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', 'Water'})}, 'HoruFieldsHealthCell': {frozenset({'Stomp'})}, 'HollowGroveTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'HollowGroveTreeAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'HollowGroveMap': {frozenset({'MapStone'})}, 'HollowGroveMapPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'DoorWarpExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide', 'ChargeJump'}), frozenset({'ChargeFlame', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Bash'}), frozenset({'Climb', 'ChargeJump', 'Grenade'}), frozenset({'Climb', 'ChargeJump', 'ChargeFlame'})}, 'HoruFieldsEnergyCell': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruFieldsHiddenExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Bash'}), frozenset({'Glide', 'Open', 'DoubleJump'}), frozenset({'Open', 'ChargeJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Glide', 'Open', 'Bash'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Glide', 'Open', 'ChargeJump'})}, 'HoruL4': {frozenset({'Stomp'})}, 'HoruL4LowerExp': {frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL4ChaseExp': {frozenset({'Free'})}, 'HoruMap': {frozenset({'MapStone'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'Glide', 'WallJump'})}, 'HoruR3Plant': {frozenset({'Grenade'})}, 'HoruR4DrainedExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'})}, 'HoruR4LaserExp': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Glide'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Water', 'Glide', 'Stomp', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Grenade', 'Glide', 'Water', 'Bash'}), frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'}), frozenset({'DoubleJump'}), frozenset({'Water', 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'DoubleJump', 'Water'}), frozenset({'Climb', 'Dash', 'Glide', 'Water'})}, 'HoruL1': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'HoruL3': {frozenset({'Glide', 'Bash', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'Stomp'}), frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'WallJumpAreaExp': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Glide', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'LeftSorrowPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone2': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'LeftSorrowKeystone3': {frozenset({'Glide'})}, 'LeftSorrowKeystone4': {frozenset({'Glide'})}, 'LeftSorrowEnergyCell': {frozenset({'Glide'})}, 'LostGroveLongSwim': {frozenset({'Water'})}, 'LostGroveHiddenExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LostGroveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'LowerBlackrootAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Grenade', 'Dash', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade'}), frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerGinsoPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'LeftGumoHideoutLowerPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftGumoHideoutSwim': {frozenset({'Water'})}, 'SorrowSpikeKeystone': {frozenset({'Glide'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide'})}, 'SorrowHealthCell': {frozenset({'Glide', 'ChargeJump', 'Bash'})}, 'SorrowLowerLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsKeystone2': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'LowerValleyMapstone': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide'}), frozenset({'Bash'}), frozenset({'Glide', 'OpenWorld'}), frozenset({'Stomp'})}, 'ValleyMainPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'MistyGrenade': {frozenset({'Grenade'})}, 'MistyEntranceStompExp': {frozenset({'Stomp'})}, 'MistyEntranceTreeExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'GumonSeal': {frozenset({'Climb'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'MistyAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Glide'})}, 'MistyPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2), 'Water'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash', 'Grenade'}), frozenset({('EC', 2), 'DoubleJump', 'WallJump'})}, 'AboveGrottoTeleporterExp': {frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'Bash', 'WallJump'})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', 'Glide'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'MoonGrottoStompPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'GrottoSwampDrainAccessExp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Grenade', 'Stomp'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'Glide'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'OuterSwampStompExp': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'OuterSwampHealthCell': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'OuterSwampGrenadeExp': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Climb'})}, 'OutsideForlornTreeExp': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'OutsideForlornWaterExp': {frozenset({'Water'})}, 'OutsideForlornCliffExp': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'HoruR2': {frozenset({'ChargeJump', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'RightForlornPlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'StompAreaExp': {frozenset({'Bash'}), frozenset({'Stomp'})}, 'StompAreaRoofExp': {frozenset({'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Glide', 'Water'}), frozenset({'Climb', 'Water', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'ChargeJump', 'Water'}), frozenset({'Grenade', 'Bash', 'Stomp', 'Water'})}, 'SorrowMapstone': {frozenset({'Bash'})}, 'SorrowMap': {frozenset({'Bash', 'MapStone'}), frozenset({'Stomp', 'MapStone'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 4)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GroveSpiderWaterSwim': {frozenset({'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}, 'GladesGrenadePool': {frozenset({'Grenade', 'Water'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesMainPool': {frozenset({'Water'})}, 'GladesMainPoolDeep': {frozenset({'Water'})}, 'FronkeyWalkRoof': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'SunstonePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SwampMap': {frozenset({'MapStone'})}, 'SwampEntranceSwim': {frozenset({'Water'})}, 'SwampEntrancePlant': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}, 'InnerSwampStompExp': {frozenset({'Stomp', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'UpperGinsoLowerKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Glide', 'Bash', 'GinsoKey'}), frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Stomp', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'LeftGladesExp': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'UpperSorrowRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Glide'})}, 'UpperSorrowLeftKeystone': {frozenset({'Glide'})}, 'UpperSorrowSpikeExp': {frozenset({'Glide'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Glide'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'}), frozenset({'Climb', 'Glide'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'Bash'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Water'})}, 'ValleyEntryTreePlant': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ValleyForlornApproachGrenade': {frozenset({'Grenade'})}, 'ValleyMap': {frozenset({'Bash', 'MapStone'})}, 'ValleyRightSwimExp': {frozenset({'Water'})}, 'ValleyRightBirdStompCell': {frozenset({'Climb', 'ChargeJump'})}, 'ValleyRightFastStomplessCell': {frozenset({'Glide', 'Wind'})}, 'ValleyRightExp': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Climb', 'ChargeJump'})}, 'WilhelmExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'dbash': {'AboveChargeJumpAbilityCell': {frozenset({'Bash'})}, 'GrenadeSkillTree': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'GrenadeAreaExp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Bash', 'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Bash'})}, 'HoruFieldsEnergyCell': {frozenset({'Bash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'Bash'}), frozenset({'Bash'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'HoruR4LaserExp': {frozenset({'Bash'})}, 'LeftSorrowGrenade': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutLeftHangingExp': {frozenset({'Bash'})}, 'GumoHideoutRightHangingExp': {frozenset({'Bash'})}, 'LeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftGumoHideoutHealthCell': {frozenset({'Bash'})}, 'SorrowSpikeKeystone': {frozenset({'Bash'})}, 'SorrowHiddenKeystone': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Bash'})}, 'AboveGrottoTeleporterExp': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessExp': {frozenset({'Bash'})}, 'StompAreaRoofExp': {frozenset({'Bash'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash'})}, 'ValleyMainFACS': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash'})}}, 'expert-abilities': {'AboveChargeJumpAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'BashAreaExp': {frozenset({('AC', 6), 'Dash', 'GinsoKey'}), frozenset({('AC', 6), 'Dash', 'GinsoKey', 'DoubleJump', 'WallJump'})}, 'ChargeFlameAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DashAreaPlant': {frozenset({'Dash', ('AC', 6)})}, 'DeathGauntletRoofPlant': {frozenset({'Dash', ('AC', 6)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 6), 'Dash'})}, 'ForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', ('AC', 6), 'Dash'})}, 'GladesLaser': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Grenade', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide', 'ChargeJump'}), frozenset({('AC', 6), ('EC', 2), 'Climb', 'Dash', 'Grenade', 'ChargeJump'})}, 'GrenadeSkillTree': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaExp': {frozenset({'Dash', ('AC', 6)})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'HollowGroveTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveTreeAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HollowGroveMapPlant': {frozenset({'Dash', ('AC', 6)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'HoruFieldsPlant': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'HoruFieldsHiddenExp': {frozenset({'Dash', ('AC', 6)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'HoruL4LowerExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', 'Stomp', ('AC', 3)})}, 'HoruR3Plant': {frozenset({'Dash', ('AC', 6)})}, 'HoruR4DrainedExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Dash', ('AC', 6)})}, 'HoruR4LaserExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}, 'HoruL1': {frozenset({'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)})}, 'HoruL2': {frozenset({'Stomp', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}, 'HoruL3': {frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 2), 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'LeftSorrowPlant': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerBlackrootLaserExp': {frozenset({'Dash', ('AC', 6)})}, 'LowerGinsoPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutLowerPlant': {frozenset({'Dash', ('AC', 6)})}, 'LeftGumoHideoutHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SorrowSpikeKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowHiddenKeystone': {frozenset({'Dash', ('AC', 6)})}, 'SorrowLowerLeftKeystone': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SpiritCavernsKeystone2': {frozenset({'Dash', ('AC', 6)})}, 'SpiritCavernsAbilityCell': {frozenset({'Dash', ('AC', 6)})}, 'LowerValleyMapstone': {frozenset({'Dash', ('AC', 6)})}, 'KuroPerchExp': {frozenset({'Dash', ('AC', 6), 'OpenWorld'}), frozenset({'Dash', ('AC', 3), 'ChargeJump', 'WallJump'}), frozenset({'Dash', ('AC', 6)})}, 'ValleyMainPlant': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntranceTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'MistyPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'AboveGrottoTeleporterExp': {frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'BelowGrottoTeleporterPlant': {frozenset({'Dash', ('AC', 6)})}, 'MoonGrottoStompPlant': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessExp': {frozenset({'Dash', ('AC', 6)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampStompExp': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampMortarPlant': {frozenset({'Dash', ('AC', 6)})}, 'RightForlornPlant': {frozenset({'Dash', ('AC', 6)})}, 'StompAreaExp': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}, 'StompAreaGrenadeExp': {frozenset({('AC', 6), 'Dash', 'Water', 'Grenade', 'Stomp'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Water', 'Grenade'})}, 'SorrowMapstone': {frozenset({'Dash', ('AC', 6)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterExp': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Dash', ('AC', 6)})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'Dash', ('AC', 6)})}, 'FronkeyWalkRoof': {frozenset({'Dash', ('AC', 6)})}, 'SunstonePlant': {frozenset({'Dash', ('AC', 6)})}, 'InnerSwampDrainExp': {frozenset({'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', ('AC', 6), 'Water'}), frozenset({'ChargeFlame', 'Climb', 'Dash', 'Water', 'Stomp', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoLeftUpperExp': {frozenset({'Dash', ('AC', 6)})}, 'TopGinsoRightPlant': {frozenset({'Dash', ('AC', 6)})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoLowerKeystone': {frozenset({('AC', 6), 'Dash', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'UpperSorrowLeftKeystone': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyEntryTreePlant': {frozenset({'Dash', ('AC', 6)})}, 'ValleyMap': {frozenset({'Grenade', 'Dash', 'MapStone', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'MapStone', ('AC', 3)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Wind', 'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'WallJump'})}}, 'master-abilities': {'BashAreaExp': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), 'DoubleJump'})}, 'GumoHideoutRedirectPlant': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Glide', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', ('AC', 12), 'DoubleJump'})}, 'HoruLavaDrainedRightExp': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({'Glide', 'Open', ('AC', 12), 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruL1': {frozenset({('AC', 6), ('EC', 1), 'Dash', 'Stomp', 'DoubleJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', ('AC', 3), 'Dash'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}, 'HoruL3': {frozenset({('AC', 6), 'Dash', ('EC', 6), 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', ('EC', 3)}), frozenset({('AC', 6), ('EC', 4), 'Dash', 'Glide', 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 7)}), frozenset({'Glide', 'Dash', ('AC', 6), ('EC', 6)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', ('EC', 6), 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'LowerGinsoHiddenExp': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}, 'LeftGumoHideoutExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftGumoHideoutHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyFrogNookExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'OuterSwampHealthCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'TopGinsoLeftUpperExp': {frozenset({('AC', 12), 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump'})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowFarRightKeystone': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', 'DoubleJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({('AC', 12), 'DoubleJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'KuroPerchExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'DashAreaRoofExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'DoubleJumpAreaExp': {frozenset({'DoubleJump'})}, 'ForlornKeystone4': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}, 'LowerGinsoKeystone3': {frozenset({'DoubleJump'})}, 'LowerGinsoKeystone4': {frozenset({'DoubleJump'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'ChargeJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'ChargeJump'})}, 'GumoHideoutMiniboss': {frozenset({'DoubleJump'})}, 'GumoHideoutEnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Stomp', 'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}, 'DoorWarpExp': {frozenset({'DoubleJump'})}, 'HoruFieldsPlant': {frozenset({'Grenade', 'Glide'}), frozenset({'Grenade', 'Dash'}), frozenset({'Grenade', 'DoubleJump'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash'})}, 'HoruL4LowerExp': {frozenset({'Dash', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'DoubleJump'})}, 'HoruL2': {frozenset({'Glide', 'Stomp', 'DoubleJump'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}, 'WallJumpAreaEnergyCell': {frozenset({'DoubleJump'})}, 'FarLeftGumoHideoutExp': {frozenset({'Bash'})}, 'LeftSorrowAbilityCell': {frozenset({'Bash'})}, 'LeftSorrowKeystone2': {frozenset({'Bash'})}, 'LeftSorrowKeystone3': {frozenset({'Bash'})}, 'LeftSorrowKeystone4': {frozenset({'Bash'})}, 'LeftSorrowEnergyCell': {frozenset({'Bash'})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump'})}, 'LowerGinsoHiddenExp': {frozenset({'DoubleJump'})}, 'SorrowSpikeKeystone': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash'})}, 'SpiritCavernsKeystone2': {frozenset({'Free'})}, 'LowerValleyMapstone': {frozenset({'Free'})}, 'MistyEntranceStompExp': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'ChargeFlame', 'Dash'})}, 'MistyEntranceTreeExp': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Bash'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'OutsideForlornTreeExp': {frozenset({'Bash'})}, 'HoruR1HangingExp': {frozenset({'Glide', 'WallJump'})}, 'HoruR2': {frozenset({'Stomp', 'DoubleJump'})}, 'HoruR4DrainedExp': {frozenset({'Bash'})}, 'StompAreaExp': {frozenset({'Grenade'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}, 'InnerSwampDrainExp': {frozenset({'DoubleJump', 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Grenade', 'GinsoKey'})}, 'GrottoLasersRoofExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'DoubleJump'}), frozenset({'Climb'})}, 'KuroPerchExp': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'glitched': {'BlackrootBoulderExp': {frozenset({'Free'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 3)})}, 'GladesGrenadeTree': {frozenset({'Grenade'})}, 'KuroPerchExp': {frozenset({'ChargeJump'})}}, 'standard-abilities': {'BlackrootMap': {frozenset({'Climb', 'Dash', 'MapStone', ('AC', 3)})}, 'DoubleJumpSkillTree': {frozenset({'Dash', ('AC', 3)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', 'Dash', ('AC', 3)})}, 'LowerGinsoKeystone1': {frozenset({'Dash', ('AC', 3)})}, 'LowerGinsoKeystone2': {frozenset({'Dash', ('AC', 3)})}, 'GladesLaserGrenade': {frozenset({'Dash', 'Grenade', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'GumoHideoutMapstone': {frozenset({'Dash', ('AC', 3)})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Dash', ('AC', 3)})}, 'HollowGroveTreeAbilityCell': {frozenset({'WallJump', 'Dash', 'Glide', 'Stomp', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Glide', 'Stomp', ('AC', 3)})}, 'SwampTeleporterAbilityCell': {frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsPlant': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}, 'HoruFieldsEnergyCell': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'ChargeJump', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedLeftExp': {frozenset({'Glide', 'Open', 'Dash', ('AC', 3)})}, 'HoruR1EnergyCell': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruR4DrainedExp': {frozenset({'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Glide', 'Dash', ('AC', 3)})}, 'InnerSwampDrainExp': {frozenset({'Dash', ('AC', 3)})}, 'HoruL1': {frozenset({'WallJump', 'Dash', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Grenade', 'Stomp', ('AC', 3), 'Bash'}), frozenset({'Dash', 'Stomp', 'ChargeJump', ('AC', 3), 'Bash'}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 3), 'Bash'})}, 'HoruL2': {frozenset({'Stomp', ('AC', 3), 'Dash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'DoubleJump', ('AC', 3)})}, 'HoruL3': {frozenset({'Bash', 'Stomp', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Bash', 'Dash', ('AC', 3)})}, 'FarLeftGumoHideoutExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'GumoHideoutLeftHangingExp': {frozenset({'Dash', ('AC', 3)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Dash', ('AC', 3)})}, 'BelowGrottoTeleporterPlant': {frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 3)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'ChargeFlame', 'Glide', 'Dash', ('AC', 3)})}, 'HoruR1HangingExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'HoruLavaDrainedRightExp': {frozenset({'Dash', ('AC', 3)})}, 'AboveChargeFlameTreeExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}, 'UpperGinsoLowerKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Dash', ('AC', 3), 'GinsoKey', 'ChargeJump'})}}, 'expert-core': {'BlackrootMap': {frozenset({'Climb', 'MapStone'})}, 'DashAreaMapstone': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'DoubleJumpSkillTree': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', 'Water'}), frozenset({'Grenade', 'Bash'})}, 'ForlornHiddenSpiderExp': {frozenset({'ForlornKey', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Open'})}, 'GladesLaserGrenade': {frozenset({'Water', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'GrenadeSkillTree': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'Bash'})}, 'GumoHideoutCrusherExp': {frozenset({'DoubleJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'DoubleJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'HoruR1EnergyCell': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Glide'})}, 'HoruR4DrainedExp': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruL1': {frozenset({'Glide', 'Stomp', 'Bash'})}, 'HoruL2': {frozenset({'Climb', 'Stomp', 'Glide', 'DoubleJump'})}, 'HoruL3': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LeftGumoHideoutUpperPlant': {frozenset({'ChargeFlame'})}, 'LeftSorrowKeystone1': {frozenset({'ChargeJump', 'WallJump'})}, 'LeftSorrowKeystone2': {frozenset({'ChargeJump', 'WallJump'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerBlackrootLaserExp': {frozenset({'Grenade', 'Bash'}), frozenset({'DoubleJump'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'DoubleJump'})}, 'LeftGumoHideoutExp': {frozenset({'Climb', 'DoubleJump'})}, 'SorrowHiddenKeystone': {frozenset({'Bash', 'ChargeJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Climb', 'ChargeJump'})}, 'SorrowLowerLeftKeystone': {frozenset({'Bash', 'DoubleJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'Climb', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'MistyEntranceStompExp': {frozenset({'Climb', 'Dash', 'ChargeJump'})}, 'MistyEntranceTreeExp': {frozenset({'Bash'})}, 'MistyPostClimbAboveSpikePit': {frozenset({'Bash', 'DoubleJump'})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Bash', 'DoubleJump'})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'Glide'})}, 'LeftGrottoTeleporterExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'HoruR1HangingExp': {frozenset({'DoubleJump'}), frozenset({'Dash'})}, 'HoruR2': {frozenset({'Stomp', 'WallJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'ChargeJump'})}, 'StompAreaExp': {frozenset({'ChargeFlame'})}, 'AboveChargeFlameTreeExp': {frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Dash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'ChargeFlame', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Glide', 'WallJump'}), frozenset({'Climb', 'Stomp', 'Glide'}), frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash'})}, 'SpiderSacGrenadeDoor': {frozenset({'Grenade', 'Climb', 'DoubleJump'})}, 'InnerSwampDrainExp': {frozenset({'ChargeJump', 'DoubleJump', 'Water'}), frozenset({'Glide', 'Dash', 'WallJump', 'Water'})}, 'SwampEntrancePlant': {frozenset({'Grenade'})}, 'InnerSwampStompExp': {frozenset({'Grenade', 'Bash', 'ChargeJump', 'Water'})}, 'InnerSwampSwimRightKeystone': {frozenset({'DoubleJump'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoRedirectUpperExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'UpperGinsoEnergyCell': {frozenset({'Dash', 'GinsoKey', 'ChargeJump'}), frozenset({'ChargeFlame', 'GinsoKey'})}, 'LeftGladesExp': {frozenset({'DoubleJump'}), frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Grenade', 'Bash'})}, 'ValleyMap': {frozenset({'Grenade', 'MapStone', 'DoubleJump'}), frozenset({'Grenade', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'ChargeJump'}), frozenset({'ChargeFlame', 'MapStone', 'DoubleJump'})}, 'WilhelmExp': {frozenset({'Climb', 'Bash'}), frozenset({'Grenade', 'Bash'})}}, 'expert-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)}), frozenset({('EC', 2), 'Dash', ('AC', 6), ('HC', 2)}), frozenset({'Grenade', 'Bash', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), 'Dash', ('HC', 2), 'Grenade', 'Bash'})}, 'DeathGauntletStompSwim': {frozenset({('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Climb', 'Bash', ('HC', -1)})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'WallJump', ('HC', 1)})}, 'GladesLaser': {frozenset({'Glide', 'WallJump'})}, 'GladesLaserGrenade': {frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'Glide'}), frozenset({'Grenade', 'Glide', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('EC', 1), 'Climb', 'Dash', ('HC', 2), 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Grenade', 'DoubleJump'}), frozenset({('HC', 0), 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Grenade', 'ChargeJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Climb', 'Dash', 'Water', 'Grenade'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Grenade', 'Glide', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), ('EC', 2), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Dash', 'Grenade', 'WallJump'}), frozenset({('AC', 6), ('HC', 0), ('EC', 1), 'Dash', 'Water', 'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', ('HC', 0)}), frozenset({'Grenade', 'ChargeJump', ('HC', 0), 'Water'}), frozenset({('AC', 6), ('HC', 0), ('EC', 2), 'Climb', 'Dash', 'Grenade'}), frozenset({('EC', 1), ('HC', 1), 'Grenade', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'Grenade', 'WallJump'})}, 'GroveWaterStompAbilityCell': {frozenset({'Stomp', ('HC', 2)}), frozenset({('HC', 3), 'Bash'})}, 'HoruFieldsAbilityCell': {frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'HoruR1EnergyCell': {frozenset({'WallJump', ('HC', 2)}), frozenset({'Climb', ('HC', 2)})}, 'HoruR4DrainedExp': {frozenset({('HC', 3), 'DoubleJump'}), frozenset({('HC', 3), 'Dash', ('AC', 3)}), frozenset({('HC', 3), 'Glide'})}, 'LeftSorrowAbilityCell': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'LeftSorrowKeystone3': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowKeystone4': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({'Climb', 'Dash', 'ChargeJump', ('HC', 2)})}, 'LeftSorrowEnergyCell': {frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 2)})}, 'LowerBlackrootAbilityCell': {frozenset({'DoubleJump', ('HC', 2)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'DoubleJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Glide', 'Stomp', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)})}, 'LeftGumoHideoutSwim': {frozenset({'Free'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', ('HC', 2)}), frozenset({'Bash', 'WallJump', ('HC', 2)})}, 'SorrowHealthCell': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'MistyFrogNookExp': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({('HC', 4), 'Dash', 'WallJump'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', ('HC', 1)})}, 'MistyMortarCorridorUpperExp': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}, 'MistyMortarCorridorHiddenExp': {frozenset({'Grenade', 'Bash', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({('HC', 4), 'Bash'})}, 'GrottoEnergyDoorSwim': {frozenset({('EC', 2)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'Climb', 'DoubleJump'})}, 'LeftGrottoTeleporterExp': {frozenset({('HC', 4), 'WallJump'}), frozenset({'Glide', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 4)}), frozenset({'Glide', 'WallJump', ('HC', 1)})}, 'BelowGrottoTeleporterHealthCell': {frozenset({'Bash', ('HC', 2)})}, 'OutsideForlornWaterExp': {frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({'ChargeJump', ('HC', 2)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({('HC', 0), 'Climb', 'Dash', 'Water', 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({'Climb', 'Dash', ('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', ('AC', 3)}), frozenset({('HC', 0), 'Water', 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Grenade', ('HC', 1)}), frozenset({('HC', 1), 'Grenade', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'ChargeJump', ('HC', 1)})}, 'GroveSpiderWaterSwim': {frozenset({'Bash', ('HC', 2)}), frozenset({('HC', 3)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 3)}), frozenset({'Grenade', 'Stomp', ('HC', 2)})}, 'GladesMainPool': {frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 1)}), frozenset({'Stomp', ('HC', 0)})}, 'GladesMainPoolDeep': {frozenset({('HC', 4)})}, 'SwampEntranceSwim': {frozenset({'Free'})}, 'InnerSwampStompExp': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Stomp'}), frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 2)})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', ('HC', 0), 'DoubleJump', 'ChargeFlame'})}, 'UpperGinsoLowerKeystone': {frozenset({'GinsoKey', ('HC', 2)})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', 'DoubleJump', 'WallJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('HC', 2)})}, 'UpperSorrowLeftKeystone': {frozenset({'ChargeJump', ('HC', 2)})}, 'ValleyRightSwimExp': {frozenset({('HC', 1)})}, 'ValleyRightFastStomplessCell': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyRightExp': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'ValleyMainFACS': {frozenset({'WallJump', 'Dash', ('HC', 1), 'ChargeJump', ('AC', 3)})}, 'WilhelmExp': {frozenset({'ChargeJump', ('HC', 2)})}}, 'master-lure': {'UpperSorrowSpikeExp': {frozenset({'Bash'})}, 'UpperSorrowFarLeftKeystone': {frozenset({'Bash'})}, 'UpperSorrowRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowFarRightKeystone': {frozenset({'Bash'})}, 'UpperSorrowLeftKeystone': {frozenset({'Bash'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Bash'})}, 'ForlornEscape': {frozenset({'Bash'})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({('AC', 12)}), frozenset({('HC', 2)})}, 'SwampTeleporterAbilityCell': {frozenset({'Bash'})}, 'WallJumpAreaExp': {frozenset({'Bash'})}, 'WallJumpAreaEnergyCell': {frozenset({'Bash'})}, 'SorrowHealthCell': {frozenset({'Glide', 'Stomp', 'WallJump'}), frozenset({'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'Stomp'})}, 'KuroPerchExp': {frozenset({'Bash'})}, 'LeftGrottoTeleporterExp': {frozenset({'Bash'})}, 'InnerSwampDrainExp': {frozenset({'Bash', 'Water'})}, 'InnerSwampStompExp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 0)})}}, 'master-dboost': {'UpperSorrowSpikeExp': {frozenset({('AC', 12), 'Dash', 'Grenade', 'Bash', ('HC', 1)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 12), ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'UpperSorrowFarLeftKeystone': {frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 7)}), frozenset({('AC', 12), 'Climb', 'Dash', 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', ('AC', 12), ('HC', 0), 'WallJump'})}, 'HoruR1EnergyCell': {frozenset({('AC', 12), 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), ('HC', 1)})}, 'HoruR4DrainedExp': {frozenset({('HC', 8)}), frozenset({('AC', 12), ('HC', 6)})}, 'HoruL1': {frozenset({('EC', 1), ('AC', 12), 'Climb', ('HC', 2), 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('EC', 2), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), ('AC', 12), 'Climb', 'Stomp', 'DoubleJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'ChargeJump', ('HC', 2)})}, 'HoruL3': {frozenset({('HC', 3), ('AC', 12), 'Climb', 'Dash', ('EC', 2), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeFlame', ('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 1), ('AC', 12), 'Climb', 'Dash', 'Glide', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('HC', 0), ('AC', 12), 'Stomp', 'ChargeJump', 'DoubleJump'})}, 'LeftSorrowAbilityCell': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}, 'LeftSorrowKeystone3': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowKeystone4': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LeftSorrowEnergyCell': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 1)})}, 'LostGroveLongSwim': {frozenset({('HC', 3), ('AC', 12)}), frozenset({('HC', 9)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Stomp', ('HC', 1)})}, 'SorrowLowerLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'MistyFrogNookExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'MistyPostClimbSpikeCave': {frozenset({'Bash', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 8)})}, 'MistyMortarCorridorHiddenExp': {frozenset({('HC', 7)}), frozenset({('HC', 4), ('AC', 12)}), frozenset({'DoubleJump', ('HC', 1)})}, 'LeftGrottoTeleporterExp': {frozenset({'DoubleJump', ('HC', 1)})}, 'OutsideForlornWaterExp': {frozenset({('AC', 12), ('HC', -1)})}, 'HoruR1HangingExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'DoubleJump', ('HC', 2)}), frozenset({'Water', ('HC', 2), 'Grenade', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Water', ('HC', 2), 'Grenade', 'DoubleJump'})}, 'GroveSpiderWaterSwim': {frozenset({('HC', 2)}), frozenset({'Bash', ('AC', 12)}), frozenset({('AC', 12), ('HC', 1)})}, 'GladesGrenadePool': {frozenset({'Grenade', ('HC', 2)})}, 'GladesMainPool': {frozenset({('HC', 0)})}, 'InnerSwampDrainExp': {frozenset({('HC', 4), 'Dash', ('AC', 12), 'WallJump'}), frozenset({('HC', 4), 'Bash', ('AC', 12)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Glide', 'Stomp', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({'ChargeFlame', ('HC', 4), ('AC', 12), 'Glide', 'Stomp', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({'Climb', 'Dash', ('HC', 4), ('AC', 12)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Glide', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'DoubleJump'})}, 'TopGinsoRightPlant': {frozenset({'ChargeFlame', 'DoubleJump', ('HC', 0)}), frozenset({'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoRightKeystone': {frozenset({('HC', 0), ('AC', 12), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperGinsoUpperLeftKeystone': {frozenset({('AC', 12), 'GinsoKey', 'DoubleJump', ('HC', 2)})}, 'UpperSorrowRightKeystone': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', ('AC', 12)}), frozenset({('AC', 12), 'Grenade', 'Bash', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}, 'UpperSorrowFarRightKeystone': {frozenset({('HC', 4), 'Dash', 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump'})}, 'UpperSorrowLeftKeystone': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}, 'ValleyEntryGrenadeLongSwim': {frozenset({'Grenade', 'Bash', ('HC', 10)}), frozenset({'Grenade', ('HC', 11)}), frozenset({'Grenade', ('HC', 4), ('AC', 12)})}, 'ValleyRightFastStomplessCell': {frozenset({'Climb', ('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}, 'ValleyRightExp': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'WilhelmExp': {frozenset({('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'standard-lure': {'DeathGauntletExp': {frozenset({'Bash'})}, 'DeathGauntletStompSwim': {frozenset({'Water'})}, 'GladesLaser': {frozenset({'Bash'})}, 'HoruFieldsHealthCell': {frozenset({'Free'})}, 'HollowGroveTreeAbilityCell': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'HoruL2': {frozenset({'Stomp', 'DoubleJump', 'Bash'})}, 'LeftSorrowKeystone1': {frozenset({'Bash'})}, 'MistyEntranceStompExp': {frozenset({'Bash'})}, 'MistyAbilityCell': {frozenset({'Bash'})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Grenade'})}, 'SorrowMap': {frozenset({'MapStone'})}, 'FronkeyWalkRoof': {frozenset({'Bash'})}, 'ValleyRightFastStomplessCell': {frozenset({'Bash'})}, 'WilhelmExp': {frozenset({'Bash', 'WallJump'})}, 'KuroPerchExp': {frozenset({'HoruKey'})}}, 'casual-dboost': {'DoubleJumpSkillTree': {frozenset({'Bash', ('HC', 0)}), frozenset({'Climb', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Grenade', 'Bash', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'Water'}), frozenset({('HC', -1), 'ChargeJump', 'WallJump'}), frozenset({'Bash', ('HC', 0), 'Water'}), frozenset({'Bash', 'WallJump', ('HC', -1)})}, 'GrenadeAreaExp': {frozenset({'ChargeJump'})}, 'GumoHideoutCrusherKeystone': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'WallJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'ChargeJump', 'Water'})}, 'SpiderSacHealthCell': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb'}), frozenset({'WallJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}}, 'standard-dboost': {'DoubleJumpSkillTree': {frozenset({'Dash', ('HC', 0)})}, 'DoubleJumpAreaExp': {frozenset({'Dash', 'ChargeJump', ('HC', 0)}), frozenset({('HC', 0), 'Bash', 'Dash'}), frozenset({'ChargeJump', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 0), ('AC', 3), ('EC', 1)}), frozenset({'Bash', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)})}, 'ForlornKeystone3': {frozenset({'ForlornKey', 'ChargeJump', ('HC', 1)})}, 'LowerGinsoKeystone1': {frozenset({('HC', 0)})}, 'LowerGinsoKeystone2': {frozenset({'ChargeJump', ('HC', 0)})}, 'GumoHideoutMapstone': {frozenset({'ChargeJump', ('HC', 1)})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'ChargeJump', ('HC', 1)})}, 'MistyAbilityCell': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)})}, 'GrottoEnergyDoorHealthCell': {frozenset({('EC', 2), 'WallJump'})}, 'BelowGrottoTeleporterHealthCell': {frozenset({('HC', 0), 'Bash', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'BelowGrottoTeleporterPlant': {frozenset({'ChargeFlame', ('HC', 1)}), frozenset({'Grenade', ('HC', 1)})}, 'GrottoSwampDrainAccessPlant': {frozenset({'ChargeFlame', 'Glide', ('HC', 1)}), frozenset({'ChargeFlame', 'DoubleJump', ('HC', 1)}), frozenset({'ChargeFlame', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeFlame', 'WallJump', ('HC', 1)})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', ('HC', 0), 'Water'})}, 'InnerSwampDrainExp': {frozenset({'Grenade', 'Bash', ('HC', 1), 'Water'})}, 'TopGinsoLeftLowerExp': {frozenset({('HC', 0), 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 0)})}, 'TopGinsoLeftUpperExp': {frozenset({('HC', 0), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('HC', 0)}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'})}, 'TopGinsoRightPlant': {frozenset({'Grenade', 'DoubleJump', 'WallJump', ('HC', 0)}), frozenset({'Climb', 'Grenade', 'DoubleJump', ('HC', 0)})}, 'UpperGinsoLowerKeystone': {frozenset({'Bash', 'GinsoKey', ('HC', 0)}), frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'}), frozenset({('HC', 0), 'GinsoKey', 'DoubleJump'})}, 'UpperGinsoRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'GinsoKey', ('HC', 0), 'ChargeJump'})}}, 'standard-core': {'DoubleJumpAreaExp': {frozenset({'ChargeJump', 'WallJump'})}, 'ForlornKeystone2': {frozenset({'ForlornKey', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ForlornKey', 'Dash', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'DoubleJump'}), frozenset({'Glide', 'ForlornKey', 'Climb', 'Dash'})}, 'ForlornEntranceExp': {frozenset({'ForlornKey', 'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'ForlornKey', 'Dash', 'Open'})}, 'LowerGinsoKeystone1': {frozenset({'Grenade', 'Bash'})}, 'LowerGinsoKeystone2': {frozenset({'Grenade', 'Bash'})}, 'GladesLaserGrenade': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Grenade', 'Climb', 'Bash'}), frozenset({'Climb', 'Grenade', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'GrenadeSkillTree': {frozenset({'Grenade', 'Bash'})}, 'GrenadeAreaExp': {frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'GumoHideoutMapstone': {frozenset({'Climb'}), frozenset({'Grenade', 'Bash'})}, 'GumoHideoutRedirectAbilityCell': {frozenset({'Grenade', 'Bash'})}, 'SwampTeleporterAbilityCell': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}, 'HoruFieldsHiddenExp': {frozenset({'Bash'})}, 'HoruLavaDrainedLeftExp': {frozenset({'Open', 'Dash', 'DoubleJump'})}, 'HoruL4LowerExp': {frozenset({'Climb', 'Stomp'})}, 'HoruR1EnergyCell': {frozenset({'Grenade', 'Bash'})}, 'HoruR3Plant': {frozenset({'ChargeFlame'})}, 'HoruR4DrainedExp': {frozenset({'Grenade', 'Bash', 'Climb'})}, 'HoruL1': {frozenset({'Glide', 'ChargeJump', 'Stomp', 'Bash'})}, 'HoruL3': {frozenset({'ChargeFlame', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Glide', 'Bash', 'ChargeFlame', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeFlame'}), frozenset({'Grenade', 'Bash', 'ChargeFlame'})}, 'FarLeftGumoHideoutExp': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'LeftSorrowKeystone1': {frozenset({'Dash'})}, 'LowerBlackrootLaserAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'LowerBlackrootGrenadeThrow': {frozenset({'ChargeJump', 'DoubleJump'})}, 'GumoHideoutRightHangingExp': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'}), frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'})}, 'SorrowHealthCell': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'SpiritCavernsAbilityCell': {frozenset({'DoubleJump', 'WallJump'})}, 'MistyFrogNookExp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'})}, 'MistyPostClimbSpikeCave': {frozenset({'Glide', 'Bash'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Grenade', 'Bash'})}, 'OuterSwampHealthCell': {frozenset({'Climb', 'DoubleJump'})}, 'HoruR1HangingExp': {frozenset({'Grenade', 'Bash'})}, 'HoruR2': {frozenset({'Glide', 'Stomp', 'Climb', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}, 'StompAreaExp': {frozenset({'Climb', 'ChargeJump'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'Water'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Bash', 'ChargeJump'})}, 'GroveAboveSpiderWaterEnergyCell': {frozenset({'Dash', 'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'AboveChargeFlameTreeExp': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}, 'GladesGrenadeTree': {frozenset({'Grenade', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'Climb', 'Wind'}), frozenset({'Grenade', 'Glide', 'WallJump', 'Wind'})}, 'InnerSwampSwimRightKeystone': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}, 'TopGinsoLeftLowerExp': {frozenset({'Bash'})}, 'UpperGinsoRedirectLowerExp': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperRightKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoUpperLeftKeystone': {frozenset({'Bash', 'GinsoKey'}), frozenset({'Glide', 'GinsoKey', 'ChargeJump'}), frozenset({'GinsoKey', 'DoubleJump', 'ChargeJump'})}, 'UpperGinsoEnergyCell': {frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'GrottoLasersRoofExp': {frozenset({'Climb', 'DoubleJump'})}, 'SpiritCavernsTopLeftKeystone': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyRightBirdStompCell': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Dash', 'DoubleJump'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ForlornKeystone1': {frozenset({'ForlornKey', 'Bash'})}, 'GumoHideoutMiniboss': {frozenset({'Bash'})}, 'GroveWaterStompAbilityCell': {frozenset({'Bash', 'Water'})}, 'SorrowHealthCell': {frozenset({'Grenade', 'Glide', 'Stomp', 'Bash'}), frozenset({('AC', 6), 'Dash', ('EC', 2), 'Glide', 'Stomp'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'gjump': {'GladesLaserGrenade': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}, 'SwampTeleporterAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruFieldsEnergyCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruR4LaserExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruL3': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowSpikeKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowHiddenKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'SorrowLowerLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'KuroPerchExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'MistyMortarCorridorUpperExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'StompAreaGrenadeExp': {frozenset({'Grenade', 'Climb', 'ChargeJump', 'Water'})}, 'SorrowMapstone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterExp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'GroveAboveSpiderWaterHealthCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'UpperSorrowLeftKeystone': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'ValleyThreeBirdAbilityCell': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'insane': {'GrenadeSkillTree': {frozenset({'WallJump'})}, 'ValleyRightBirdStompCell': {frozenset({'Bash'})}}, 'timed-level': {'LowerBlackrootGrenadeThrow': {frozenset({'Free'})}, 'SpiderSacEnergyDoor': {frozenset({('EC', 2)})}}} -connection_rules = {'AboveChargeJumpArea': {'casual-core': {'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'Dash', 'ChargeJump', 'WallJump', ('HC', 2)})}, 'ChargeJumpArea': {frozenset({('HC', 3), 'Bash', 'ChargeJump'}), frozenset({('HC', 3), 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'SorrowTeleporter': {frozenset({'Bash'})}, 'ChargeJumpArea': {frozenset({'Bash'})}}, 'standard-lure': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'})}}, 'expert-core': {'ChargeJumpArea': {frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'ChargeJumpArea': {frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'}), frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)}), frozenset({'Bash', 'ChargeJump', 'Dash', ('AC', 3)}), frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)})}}, 'gjump': {'ChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', 'Grenade'}), frozenset({'Climb', ('HC', 3), 'ChargeJump', 'Grenade'})}}, 'dbash': {'ChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'BashTree': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Open'})}, 'UpperGinsoRedirectArea': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump'})}}, 'standard-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 1)})}}, 'expert-dboost': {'UpperGinsoRedirectArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump'})}}, 'master-abilities': {'UpperGinsoRedirectArea': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'BashTreeDoorClosed': {'casual-core': {'BashTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'BashTreeDoorOpened': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'Open', 'GinsoKey'})}, 'BashTree': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'master-core': {'BashTree': {frozenset({'DoubleJump'})}}}, 'BelowSunstoneArea': {'casual-core': {'SunstoneArea': {frozenset({'Glide', 'Stomp'})}, 'UpperSorrow': {frozenset({'Stomp'})}}, 'standard-core': {'SunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SunstoneArea': {frozenset({'Glide', 'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'ChargeJump', 'Glide'})}, 'UpperSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'gjump': {'SunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SunstoneArea': {frozenset({'Bash'})}, 'UpperSorrow': {frozenset({'Bash'})}}, 'master-dboost': {'SunstoneArea': {frozenset({('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'UpperSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}}, 'BlackrootDarknessRoom': {'casual-core': {'DashArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DashArea': {frozenset({'DoubleJump'})}}, 'master-core': {'DashArea': {frozenset({'Bash'})}}}, 'BlackrootGrottoConnection': {'casual-core': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'SideFallCell': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'SideFallCell': {frozenset({'Climb', 'Stomp'})}}}, 'ChargeFlameAreaStump': {'casual-core': {'ChargeFlameSkillTreeChamber': {frozenset({'ChargeFlame'}), frozenset({'Grenade'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'standard-core': {'ChargeFlameSkillTreeChamber': {frozenset({'Stomp'})}}, 'expert-abilities': {'ChargeFlameSkillTreeChamber': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameSkillTreeChamber': {frozenset({'DoubleJump'})}}}, 'ChargeFlameSkillTreeChamber': {'casual-core': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'ChargeFlameAreaStump': {frozenset({'Dash', ('AC', 6)})}}}, 'ChargeJumpArea': {'casual-core': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'ChargeJumpDoor': {frozenset({'Open'})}}, 'gjump': {'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Dash', 'ChargeJump', ('HC', 2)})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'Climb', 'Dash', 'ChargeJump', ('AC', 6)})}}, 'master-core': {'AboveChargeJumpArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}}, 'ChargeJumpDoor': {'casual-core': {'ChargeJumpDoorOpen': {frozenset({('KS', 4)})}}}, 'ChargeJumpDoorOpen': {'casual-core': {'ChargeJumpArea': {frozenset({'Glide'})}}, 'master-dboost': {'ChargeJumpArea': {frozenset({('AC', 12), 'Dash', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({('HC', 4), ('AC', 12), 'Grenade', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('HC', 10), ('AC', 12), 'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}, 'ChargeJumpDoorOpenLeft': {frozenset({'ChargeJump', ('HC', 2)})}}, 'expert-dboost': {'ChargeJumpDoorOpenLeft': {frozenset({('HC', 3), 'ChargeJump'})}}, 'master-lure': {'ChargeJumpDoorOpenLeft': {frozenset({'Bash'})}}}, 'ChargeJumpDoorOpenLeft': {'casual-core': {'UpperSorrow': {frozenset({'Glide'})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump', ('HC', 7)}), frozenset({('AC', 6), ('HC', 6), 'Dash', ('EC', 2), 'ChargeJump'}), frozenset({('HC', 4), ('AC', 12), 'Dash', ('EC', 2), 'ChargeJump'})}}, 'master-lure': {'UpperSorrow': {frozenset({'Bash'})}}}, 'DashArea': {'casual-core': {'DashPlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'WallJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp', 'Dash'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}, 'RazielNoArea': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Dash', ('AC', 3)}), frozenset({'WallJump'})}}, 'expert-core': {'DashPlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Glide'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Stomp'})}}, 'expert-abilities': {'DashPlantAccess': {frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)}), frozenset({'Grenade', 'Dash', ('AC', 3)}), frozenset({'ChargeFlame', 'Dash', ('AC', 6), 'WallJump'}), frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), 'ChargeFlame'})}, 'RazielNoArea': {frozenset({'Climb'})}}, 'master-core': {'DashPlantAccess': {frozenset({'Glide', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Dash', 'DoubleJump'})}, 'GrenadeAreaAccess': {frozenset({'Bash'})}}, 'master-abilities': {'DashPlantAccess': {frozenset({'Climb', 'ChargeFlame', ('AC', 3)}), frozenset({'ChargeFlame', ('AC', 3), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump', ('AC', 3)})}, 'RazielNoArea': {frozenset({'DoubleJump'})}}, 'standard-core': {'GrenadeAreaAccess': {frozenset({'Climb', 'ChargeJump'})}, 'RazielNoArea': {frozenset({'Grenade', 'Bash'})}}, 'glitched': {'GrenadeAreaAccess': {frozenset({'Free'})}}, 'insane': {'GrenadeAreaAccess': {frozenset({'Free'})}}}, 'DeathGauntlet': {'casual-core': {'DeathGauntletMoat': {frozenset({'Water'})}, 'DeathGauntletDoor': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'DeathGauntletRoof': {frozenset({'ChargeJump'})}, 'MoonGrotto': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 0)})}}, 'expert-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Bash', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'ChargeFlame', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Climb'})}}, 'master-core': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', 'DoubleJump'})}}, 'master-abilities': {'DeathGauntletRoofPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}, 'master-lure': {'MoonGrotto': {frozenset({'Dash', ('AC', 6), ('EC', 1)}), frozenset({'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Bash'})}}}, 'DeathGauntletDoor': {'casual-core': {'DeathGauntletDoorOpened': {frozenset({('EC', 4)})}}, 'glitched': {'DeathGauntletDoorOpened': {frozenset({('EC', 3)})}}, 'timed-level': {'DeathGauntletDoorOpened': {frozenset({('EC', 2)})}}}, 'DeathGauntletDoorOpened': {'casual-core': {'DeathGauntlet': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'WallJump', 'Water'}), frozenset({'Climb', 'Water'}), frozenset({'Bash', 'Water'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}, 'DeathGauntletMoat': {frozenset({'Water'})}}, 'standard-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'Bash', ('HC', 1)})}}, 'expert-dboost': {'DeathGauntlet': {frozenset({'Climb', ('HC', 0)}), frozenset({'Bash', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'})}, 'DeathGauntletMoat': {frozenset({('HC', 2)})}}, 'expert-abilities': {'DeathGauntlet': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'master-core': {'DeathGauntlet': {frozenset({'DoubleJump'})}}, 'master-dboost': {'DeathGauntletMoat': {frozenset({('HC', 1)})}}}, 'DeathGauntletRoof': {'casual-core': {'DeathGauntlet': {frozenset({'Stomp'})}}, 'standard-lure': {'DeathGauntlet': {frozenset({'Free'})}}}, 'DoubleJumpKeyDoor': {'casual-core': {'DoubleJumpKeyDoorOpened': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'expert-core': {'DoubleJumpKeyDoorOpened': {frozenset({'DoubleJump'})}}}, 'ForlornGravityRoom': {'casual-core': {'ForlornMapArea': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'master-core': {'ForlornMapArea': {frozenset({'DoubleJump'})}}, 'master-lure': {'ForlornMapArea': {frozenset({'Bash'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornInnerDoor': {'casual-core': {'ForlornOuterDoor': {frozenset({'ForlornKey'})}, 'ForlornOrbPossession': {frozenset({'Climb', 'Glide', 'Open'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Open'}), frozenset({'Glide', 'WallJump', 'Open'}), frozenset({'Open', 'DoubleJump'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'ForlornOrbPossession': {frozenset({'Dash', 'WallJump', 'Open'}), frozenset({'Climb', 'Dash', 'Open'})}, 'ForlornGravityRoom': {frozenset({'Climb', 'Dash', 'DoubleJump'}), frozenset({'Dash', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'ForlornOrbPossession': {frozenset({'Open'})}, 'ForlornGravityRoom': {frozenset({'ChargeJump'})}}, 'standard-dboost': {'ForlornGravityRoom': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'standard-abilities': {'ForlornGravityRoom': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-dboost': {'ForlornGravityRoom': {frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'ForlornGravityRoom': {frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}}, 'ForlornKeyDoor': {'casual-core': {'ForlornLaserRoom': {frozenset({'ForlornKey', ('KS', 4)})}}}, 'ForlornLaserRoom': {'casual-core': {'ForlornStompDoor': {frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Glide', 'Stomp', 'ChargeJump'})}}, 'standard-abilities': {'ForlornStompDoor': {frozenset({'Dash', 'Glide', ('AC', 3), 'Stomp', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', ('HC', 1), 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', 'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornStompDoor': {frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ForlornStompDoor': {frozenset({'Stomp', ('AC', 6), 'Dash', 'DoubleJump'}), frozenset({'Climb', 'Stomp', ('AC', 6), 'Dash'}), frozenset({('AC', 6), 'Stomp', 'ChargeJump', 'Dash'}), frozenset({'Stomp', ('AC', 6), 'Dash', 'WallJump'})}}, 'master-abilities': {'ForlornStompDoor': {frozenset({'Glide', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'master-lure': {'ForlornStompDoor': {frozenset({'Stomp', 'Bash'})}}, 'gjump': {'ForlornStompDoor': {frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'ForlornMapArea': {'casual-core': {'ForlornTeleporter': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'WallJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'ForlornKey', 'ChargeJump'}), frozenset({'Grenade', 'ForlornKey', 'Climb', 'Bash'})}}, 'standard-abilities': {'ForlornTeleporter': {frozenset({'Glide', 'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide', ('AC', 3)}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-dboost': {'ForlornTeleporter': {frozenset({'ChargeJump', ('HC', 1)})}}, 'master-core': {'ForlornTeleporter': {frozenset({'DoubleJump'})}, 'ForlornPlantAccess': {frozenset({'Grenade', 'ForlornKey', 'DoubleJump', 'Bash'}), frozenset({'ForlornKey', 'ChargeJump', 'DoubleJump'})}}, 'master-lure': {'ForlornTeleporter': {frozenset({'Bash'})}}, 'master-dboost': {'ForlornTeleporter': {frozenset({('AC', 12), 'ChargeJump', ('HC', 0)})}}}, 'ForlornOrbPossession': {'casual-core': {'ForlornPlantAccess': {frozenset({'ForlornKey'})}, 'ForlornInnerDoor': {frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'Glide', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ForlornInnerDoor': {frozenset({('HC', 1)})}}, 'standard-core': {'ForlornInnerDoor': {frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'ForlornInnerDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'ForlornInnerDoor': {frozenset({'ChargeJump'})}}, 'master-dboost': {'ForlornInnerDoor': {frozenset({('AC', 12), ('HC', 0)})}}}, 'ForlornStompDoor': {'casual-core': {'RightForlorn': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'standard-abilities': {'RightForlorn': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Climb', 'Dash', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'RightForlorn': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)})}}, 'expert-dboost': {'RightForlorn': {frozenset({'Climb', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)})}}, 'master-dboost': {'RightForlorn': {frozenset({'Climb', ('AC', 12), ('HC', 0)}), frozenset({('AC', 12), ('HC', 0), 'WallJump'})}}, 'master-lure': {'RightForlorn': {frozenset({'Bash'})}}, 'master-abilities': {'RightForlorn': {frozenset({('AC', 12), 'DoubleJump'})}}}, 'ForlornTeleporter': {'casual-core': {'ForlornOrbPossession': {frozenset({'ForlornKey', 'Open'})}, 'ForlornMapArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'GinsoEscape': {'casual-core': {'GinsoEscapeComplete': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-core': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'GinsoEscapeComplete': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'dbash': {'GinsoEscapeComplete': {frozenset({'Bash'})}}, 'master-dboost': {'GinsoEscapeComplete': {frozenset({('HC', 3), ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', ('AC', 12), 'DoubleJump', ('HC', 7)}), frozenset({('HC', 4), 'ChargeJump', 'DoubleJump'})}}, 'insane': {'GinsoEscapeComplete': {frozenset({('HC', 9), ('AC', 12), 'DoubleJump'})}}}, 'GinsoInnerDoor': {'casual-core': {'LowerGinsoTree': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'LowerGinsoTree': {frozenset({'DoubleJump'})}}, 'master-abilities': {'LowerGinsoTree': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}}}, 'GinsoMiniBossDoor': {'casual-core': {'BashTreeDoorClosed': {frozenset({'Free'})}}}, 'GinsoTeleporter': {'casual-core': {'TopGinsoTree': {frozenset({'Bash', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'GinsoKey', 'DoubleJump'}), frozenset({'Climb', 'GinsoKey', 'ChargeJump'})}, 'UpperGinsoDoorClosed': {frozenset({'Open'})}}, 'standard-core': {'TopGinsoTree': {frozenset({'Grenade', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'ChargeFlame', 'GinsoKey', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'TopGinsoTree': {frozenset({'Stomp', 'GinsoKey', 'DoubleJump', 'WallJump'}), frozenset({'GinsoKey', 'ChargeJump'})}}, 'master-abilities': {'TopGinsoTree': {frozenset({'ChargeFlame', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'GinsoKey', 'DoubleJump'}), frozenset({'Stomp', 'GinsoKey', 'DoubleJump', ('AC', 12)})}}}, 'GladesLaserArea': {'casual-core': {'MidSpiritCaverns': {frozenset({('EC', 4), 'DoubleJump'}), frozenset({('EC', 4), 'WallJump'}), frozenset({'Grenade', 'Bash', ('EC', 4)}), frozenset({'Climb', ('EC', 4)}), frozenset({'ChargeJump', ('EC', 4)})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Dash', ('EC', 4)})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash', ('EC', 4)})}}, 'timed-level': {'MidSpiritCaverns': {frozenset({'Climb', ('EC', 2)}), frozenset({('EC', 2), 'WallJump'}), frozenset({('EC', 2), 'DoubleJump'}), frozenset({('EC', 2), 'Dash'}), frozenset({('EC', 2), 'ChargeJump'}), frozenset({('EC', 2), 'Bash'})}}}, 'GladesMain': {'casual-core': {'GladesMainAttic': {frozenset({'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'GladesLaserArea': {frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'LowerChargeFlameArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-core': {'GladesMainAttic': {frozenset({'DoubleJump', 'WallJump'})}}, 'expert-core': {'GladesMainAttic': {frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'GladesMainAttic': {frozenset({'Dash', ('AC', 6)})}, 'GladesLaserArea': {frozenset({'Dash', ('AC', 6)})}, 'LowerChargeFlameArea': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'GladesMainAttic': {frozenset({'Bash'})}, 'GladesLaserArea': {frozenset({'Bash'})}}, 'master-core': {'GladesMainAttic': {frozenset({'DoubleJump'})}}}, 'GladesMainAttic': {'glitched': {'LowerChargeFlameArea': {frozenset({'Dash'})}}}, 'GrenadeAreaAccess': {'casual-core': {'GrenadeArea': {frozenset({'Dash'})}, 'LowerBlackroot': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'})}}, 'expert-core': {'GrenadeArea': {frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'gjump': {'GrenadeArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'GrenadeArea': {frozenset({'Free'})}}, 'insane': {'GrenadeArea': {frozenset({'Free'})}}, 'casual-dboost': {'LowerBlackroot': {frozenset({'Free'})}}, 'standard-core': {'LowerBlackroot': {frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'LowerBlackroot': {frozenset({'Dash', ('AC', 3)})}}, 'dbash': {'LowerBlackroot': {frozenset({'Bash'})}}}, 'GumoHideout': {'casual-core': {'DoubleJumpKeyDoor': {frozenset({('KS', 2)})}, 'LeftGumoHideout': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'})}, 'SideFallCell': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'}), frozenset({'ChargeJump', 'WallJump'})}}, 'expert-core': {'LeftGumoHideout': {frozenset({'ChargeJump'})}}, 'master-core': {'LeftGumoHideout': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}, 'LowerLeftGumoHideout': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}, 'master-abilities': {'LeftGumoHideout': {frozenset({('AC', 12), 'DoubleJump'})}}, 'dbash': {'SideFallCell': {frozenset({'Bash'})}}}, 'GumoHideoutRedirectArea': {'casual-core': {'GumoHideoutRedirectEnergyVault': {frozenset({('EC', 4)})}}, 'glitched': {'GumoHideoutRedirectEnergyVault': {frozenset({'Free'})}}}, 'HollowGrove': {'casual-core': {'SpiderWaterArea': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampTeleporter': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'HoruFields': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-core': {'SpiderWaterArea': {frozenset({'Bash'})}, 'HoruFields': {frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'master-core': {'SpiderWaterArea': {frozenset({'Free'})}, 'SwampTeleporter': {frozenset({'DoubleJump'})}, 'OuterSwampUpperArea': {frozenset({'DoubleJump'})}, 'HoruFields': {frozenset({'DoubleJump'})}, 'Iceless': {frozenset({'DoubleJump'}), frozenset({'WallJump'})}}, 'standard-abilities': {'HoruFields': {frozenset({'Climb', 'Stomp', 'Dash', ('AC', 3)})}}, 'expert-core': {'HoruFields': {frozenset({'ChargeJump'}), frozenset({'WallJump'})}}, 'expert-abilities': {'HoruFields': {frozenset({'Climb', 'Dash', ('AC', 3)})}, 'Iceless': {frozenset({'Dash', ('AC', 6)})}}, 'standard-lure': {'Iceless': {frozenset({'Bash'})}}, 'master-lure': {'MoonGrottoStompPlantAccess': {frozenset({'Dash', ('AC', 6)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}}, 'HoruBasement': {'casual-core': {'HoruEscapeOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}}, 'HoruFields': {'casual-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}, 'HoruOuterDoor': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 4)}), frozenset({('AC', 6), 'Dash', ('EC', 3), 'Glide', 'ChargeJump'})}}, 'dbash': {'HoruFieldsPushBlock': {frozenset({'Bash'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({('EC', 4), ('AC', 12), 'Climb', 'Dash', 'DoubleJump'}), frozenset({('AC', 12), 'Dash', ('EC', 5), 'DoubleJump', 'WallJump'})}, 'HoruOuterDoor': {frozenset({('AC', 12), 'Dash', ('EC', 3), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}, 'HoruOuterDoor': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'HoruOuterDoor': {frozenset({'Bash'})}}}, 'HoruFieldsPushBlock': {'master-lure': {'HollowGrove': {frozenset({'Bash'})}}}, 'HoruInnerDoor': {'casual-core': {'HoruMapLedge': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'L4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Open', 'ChargeJump'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R2OuterDoor': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb', 'ChargeJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Bash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Climb', 'Glide', 'ChargeJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open', 'Climb', 'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Open', 'Glide', 'ChargeJump', 'WallJump', 'Bash'})}, 'R4OuterDoor': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump'})}, 'HoruBasement': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}, 'HoruTeleporter': {frozenset({'ChargeJump', 'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Stomp', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'}), frozenset({'Open'}), frozenset({'ChargeJump', 'Glide', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Glide', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'DoubleJump', 'Bash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-core': {'HoruMapLedge': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'L2OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'L4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R1OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'})}, 'R3OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'R4OuterDoor': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}, 'HoruBasement': {frozenset({'Free'})}, 'HoruTeleporter': {frozenset({'Grenade', 'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Climb', 'Bash'})}}, 'dbash': {'HoruMapLedge': {frozenset({'Bash'})}, 'L1OuterDoor': {frozenset({'Bash'})}, 'L2OuterDoor': {frozenset({'Open', 'Bash'})}, 'L3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R1OuterDoor': {frozenset({'Bash'})}, 'R2OuterDoor': {frozenset({'Open', 'Bash'})}, 'R3OuterDoor': {frozenset({'Open', 'Bash'})}, 'R4OuterDoor': {frozenset({'Open', 'Bash'})}}, 'master-dboost': {'HoruMapLedge': {frozenset({('AC', 12), ('HC', 1), 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L2OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'L4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R1OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({('AC', 12), ('HC', 5), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R3OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'R4OuterDoor': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruBasement': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}, 'HoruTeleporter': {frozenset({'ChargeJump', ('AC', 12), ('HC', 5), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'L2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'L3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}, 'R2OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Open', 'Dash', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'Dash', 'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'})}, 'R3OuterDoor': {frozenset({'Glide', 'Open', 'DoubleJump', 'Bash'}), frozenset({'Climb', 'Open', 'ChargeJump', 'Bash'}), frozenset({'Grenade', 'Open', 'Bash'}), frozenset({'Open', 'ChargeJump', 'WallJump', 'Bash'}), frozenset({'Glide', 'Open', 'ChargeJump', 'WallJump'}), frozenset({'Open', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-dboost': {'L2OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'L3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}, 'R3OuterDoor': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'expert-abilities': {'L2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'L4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}, 'R2OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R3OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Open', ('AC', 6), 'Dash'})}, 'R4OuterDoor': {frozenset({'Open', ('AC', 6), 'Dash'})}}, 'master-abilities': {'L2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'L3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R2OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}, 'R3OuterDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump', ('AC', 12)})}}, 'gjump': {'L2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'L3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R2OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}, 'R3OuterDoor': {frozenset({'Climb', 'Open', 'ChargeJump', 'Grenade'})}}}, 'HoruL4LavaChasePeg': {'casual-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'standard-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-abilities': {'HoruL4CutscenePeg': {frozenset({('AC', 6), 'Dash', ('EC', 2), 'Bash', 'Stomp'})}}, 'master-core': {'HoruL4CutscenePeg': {frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'HoruOuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'HoruKey'})}, 'HoruFieldsPushBlock': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'HoruFieldsPushBlock': {frozenset({'Dash', 'DoubleJump', 'Bash'})}}, 'standard-abilities': {'HoruFieldsPushBlock': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)}), frozenset({'WallJump', 'Dash', 'Glide', 'ChargeJump', ('AC', 3)})}}, 'expert-core': {'HoruFieldsPushBlock': {frozenset({'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-abilities': {'HoruFieldsPushBlock': {frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}, 'master-core': {'HoruFieldsPushBlock': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruFieldsPushBlock': {frozenset({'Bash', ('AC', 12), 'DoubleJump'})}}, 'gjump': {'HoruFieldsPushBlock': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR1CutsceneTrigger': {'glitched': {'LowerGinsoTree': {frozenset({'Dash'})}}}, 'HoruR1MapstoneSecret': {'casual-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'})}}, 'expert-core': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-dboost': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'ChargeJump', 'DoubleJump', ('HC', 2)}), frozenset({('AC', 6), ('EC', 1), 'Dash', ('HC', 2), 'ChargeJump'})}}, 'dbash': {'HoruR1CutsceneTrigger': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'Dash', ('AC', 3)}), frozenset({'Bash', 'DoubleJump'})}}, 'master-core': {'HoruR1CutsceneTrigger': {frozenset({'Bash', 'DoubleJump'})}}, 'master-dboost': {'HoruR1CutsceneTrigger': {frozenset({('HC', 4), ('EC', 4), ('AC', 12), 'Dash', 'DoubleJump'})}}, 'gjump': {'HoruR1CutsceneTrigger': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Glide', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 6)}), frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', ('HC', 2), 'Grenade', 'Glide', 'ChargeJump'})}}}, 'HoruR3ElevatorLever': {'casual-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Glide', 'WallJump'})}}, 'casual-dboost': {'HoruR3CutsceneTrigger': {frozenset({'Climb', ('HC', -1), 'ChargeJump'})}}, 'standard-core': {'HoruR3CutsceneTrigger': {frozenset({'WallJump'})}}, 'master-core': {'HoruR3CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-abilities': {'HoruR3CutsceneTrigger': {frozenset({('AC', 12), 'DoubleJump'})}, 'HoruR3PlantCove': {frozenset({'Glide', ('AC', 6), 'Dash', ('EC', 1)}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump', ('EC', 1)}), frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 1)})}}}, 'HoruR4PuzzleEntrance': {'casual-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-abilities': {'HoruR4CutsceneTrigger': {frozenset({('AC', 6), 'Dash', 'ChargeJump', ('EC', 2)})}}, 'gjump': {'HoruR4CutsceneTrigger': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'HoruR4StompHideout': {'casual-core': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-abilities': {'HoruR4PuzzleEntrance': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR4PuzzleEntrance': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)})}, 'HoruR4CutsceneTrigger': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 2)})}}, 'dbash': {'HoruR4PuzzleEntrance': {frozenset({'Bash'})}, 'HoruR4CutsceneTrigger': {frozenset({'Bash'})}}, 'master-dboost': {'HoruR4PuzzleEntrance': {frozenset({('AC', 12), 'DoubleJump', ('HC', 1)})}}, 'gjump': {'HoruR4PuzzleEntrance': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-core': {'HoruR4CutsceneTrigger': {frozenset({'Bash', 'ChargeJump'})}}}, 'HoruTeleporter': {'casual-core': {'HoruInnerDoor': {frozenset({'Climb', 'Open', 'ChargeJump'}), frozenset({'Open', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Open', 'Bash'})}}, 'dbash': {'HoruInnerDoor': {frozenset({'Open', 'Bash'})}}, 'master-core': {'HoruInnerDoor': {frozenset({'Open', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'HoruInnerDoor': {frozenset({'Open', ('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'Iceless': {'casual-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'UpperGrotto': {frozenset({('HC', 1)})}}, 'gjump': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'InnerSwampAboveDrainArea': {'casual-core': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame', 'Water'}), frozenset({'Grenade'})}}, 'casual-dboost': {'InnerSwampDrainBroken': {frozenset({'ChargeFlame'})}}}, 'InnerSwampDrainBroken': {'casual-core': {'Swamp': {frozenset({'Climb', 'ChargeJump', 'Water'}), frozenset({'Climb', 'Bash', 'Grenade', 'Water'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump', 'Water'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'WallJump', 'Water'})}}, 'casual-dboost': {'Swamp': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Water'}), frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'Swamp': {frozenset({'DoubleJump', 'Water'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-dboost': {'Swamp': {frozenset({'ChargeJump'}), frozenset({'Climb', ('HC', 0), 'Water'})}}, 'master-core': {'Swamp': {frozenset({'Bash'})}}, 'standard-core': {'Swamp': {frozenset({'Climb', 'DoubleJump', 'Water'})}}, 'standard-abilities': {'Swamp': {frozenset({'Climb', 'Dash', ('AC', 3), 'Water'}), frozenset({'Dash', ('AC', 3), 'WallJump', 'Water'})}}, 'master-dboost': {'Swamp': {frozenset({('HC', 10), 'WallJump'}), frozenset({'Climb', ('HC', 4), ('AC', 12)}), frozenset({'Climb', ('HC', 10)}), frozenset({('HC', 10), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'DoubleJump'}), frozenset({('HC', 4), ('AC', 12), 'WallJump'})}}}, 'L2OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'L4': {'casual-core': {'HoruL4LavaChasePeg': {frozenset({'Bash'})}}, 'expert-core': {'HoruL4CutscenePeg': {frozenset({'Free'})}}}, 'LeftGlades': {'casual-core': {'UpperLeftGlades': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-lure': {'UpperLeftGlades': {frozenset({'Bash'})}}, 'expert-core': {'UpperLeftGlades': {frozenset({'DoubleJump'})}}}, 'LeftGumoHideout': {'casual-core': {'WaterVeinArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Climb', 'DoubleJump'})}}, 'standard-abilities': {'WaterVeinArea': {frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'master-core': {'WaterVeinArea': {frozenset({'Dash', 'WallJump'}), frozenset({'DoubleJump'})}}}, 'LeftSorrow': {'casual-core': {'LeftSorrowKeystones': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}}, 'expert-dboost': {'LeftSorrowKeystones': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)})}}, 'master-dboost': {'LeftSorrowKeystones': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)})}}, 'master-abilities': {'LeftSorrowKeystones': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'master-core': {'LeftSorrowKeystones': {frozenset({'Bash'})}}}, 'LeftSorrowKeystones': {'casual-core': {'LeftSorrowMiddleDoor': {frozenset({('KS', 4)})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Bash', 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'Dash', 'DoubleJump'})}}, 'expert-abilities': {'MiddleSorrow': {frozenset({'Bash', ('AC', 6), 'Dash', 'WallJump'}), frozenset({'Climb', 'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MiddleSorrow': {frozenset({'Bash'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({'ChargeJump', ('AC', 12), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'Stomp', 'ChargeJump', ('AC', 3)}), frozenset({('AC', 12), 'Climb', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump', 'WallJump'})}}}, 'LeftSorrowLowerDoor': {'casual-core': {'LeftSorrow': {frozenset({'Glide', 'Stomp', 'Bash'})}}, 'standard-core': {'LeftSorrow': {frozenset({'Climb', 'Bash', 'ChargeJump', 'Stomp'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'ChargeJump', 'Stomp', 'WallJump'})}}, 'expert-dboost': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'dbash': {'LeftSorrow': {frozenset({'Bash', 'Stomp', ('HC', 2)}), frozenset({'Grenade', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}}, 'LeftSorrowMiddleDoor': {'casual-core': {'MiddleSorrow': {frozenset({'Bash', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'Stomp', 'Bash'}), frozenset({'Climb', 'Bash', 'Stomp', 'DoubleJump'}), frozenset({'Glide', 'Stomp', 'WallJump', 'Bash'})}}, 'standard-core': {'MiddleSorrow': {frozenset({'Climb', 'Bash', 'Stomp'}), frozenset({'Bash', 'Stomp', 'WallJump'}), frozenset({'Bash', 'Stomp', 'DoubleJump'})}}, 'expert-dboost': {'MiddleSorrow': {frozenset({'Climb', ('HC', 2), 'Bash', 'ChargeJump', 'DoubleJump'})}}, 'master-abilities': {'MiddleSorrow': {frozenset({('AC', 6), 'Climb', 'Dash', 'Bash', 'ChargeJump'}), frozenset({('AC', 6), 'Bash', 'Stomp', 'Dash'})}}, 'master-dboost': {'MiddleSorrow': {frozenset({('AC', 12), 'Climb', 'Bash', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'glitched': {'MiddleSorrow': {frozenset({'Dash'})}}}, 'LostGrove': {'casual-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'casual-dboost': {'LostGroveExit': {frozenset({'Grenade', 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', 'DoubleJump'})}}, 'expert-core': {'LostGroveExit': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Glide', 'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'expert-dboost': {'LostGroveExit': {frozenset({'Grenade', ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Dash', 'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Climb', 'ChargeJump', ('HC', 4)}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-abilities': {'LostGroveExit': {frozenset({'Climb', 'Dash', 'Grenade', 'ChargeJump', ('AC', 3)})}}, 'master-abilities': {'LostGroveExit': {frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'gjump': {'LostGroveExit': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'LowerBlackroot': {'casual-core': {'LostGrove': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Grenade'})}}, 'expert-core': {'LostGrove': {frozenset({'Grenade', 'DoubleJump'})}}}, 'LowerChargeFlameArea': {'casual-core': {'GladesMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'ChargeFlameAreaStump': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}}, 'standard-core': {'GladesMain': {frozenset({'Stomp'})}}, 'expert-abilities': {'GladesMain': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'ChargeFlameAreaStump': {frozenset({'DoubleJump'})}}, 'master-lure': {'ChargeFlameAreaStump': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Bash', 'Stomp'})}}}, 'LowerGinsoTree': {'casual-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Climb', 'Glide'}), frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'standard-dboost': {'GinsoMiniBossDoor': {frozenset({'Climb', ('HC', 0)}), frozenset({('HC', 0), 'WallJump'}), frozenset({'ChargeJump', ('HC', 0)})}}, 'standard-abilities': {'GinsoMiniBossDoor': {frozenset({'Dash', 'ChargeJump', ('AC', 3)}), frozenset({'Dash', ('AC', 3), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'expert-core': {'GinsoMiniBossDoor': {frozenset({'WallJump'})}}, 'master-core': {'GinsoMiniBossDoor': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'glitched': {'R4InnerDoor': {frozenset({'Dash'})}}}, 'LowerLeftGumoHideout': {'glitched': {'LowerBlackroot': {frozenset({'Dash'})}}}, 'LowerSorrow': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'DoubleJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Bash', 'WallJump'})}, 'SorrowMapstoneArea': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'})}, 'LeftSorrowLowerDoor': {frozenset({('KS', 4)})}, 'LeftSorrow': {frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'MiddleSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'WilhelmLedge': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MiddleSorrow': {frozenset({'Glide', 'Bash'})}}, 'expert-dboost': {'WilhelmLedge': {frozenset({'Glide', ('HC', 2)}), frozenset({'DoubleJump', ('HC', 2)})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', ('AC', 6)})}, 'LeftSorrow': {frozenset({'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'Stomp', 'ChargeJump'}), frozenset({('AC', 6), 'Dash', 'ChargeJump', 'DoubleJump'}), frozenset({('EC', 2), 'Dash', 'ChargeJump', ('AC', 6)})}, 'MiddleSorrow': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'WilhelmLedge': {frozenset({'Bash'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Bash'})}, 'SorrowMapstoneArea': {frozenset({'Bash'})}, 'LeftSorrow': {frozenset({'Bash'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}, 'master-dboost': {'WilhelmLedge': {frozenset({'Glide', ('AC', 12), ('HC', 1)})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', ('HC', 7)})}}, 'master-abilities': {'WilhelmLedge': {frozenset({('AC', 12), 'DoubleJump'})}, 'LeftSorrow': {frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'SorrowMapstoneArea': {frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'WallJump'})}}, 'gjump': {'LeftSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'MiddleSorrow': {frozenset({'Bash'})}}, 'glitched': {'MiddleSorrow': {frozenset({'Glide', 'ChargeJump'})}}}, 'LowerSpiritCaverns': {'casual-core': {'MidSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'})}, 'GladesLaserArea': {frozenset({'Bash', ('EC', 4)})}, 'SpiritCavernsDoor': {frozenset({'Open'})}}, 'expert-core': {'MidSpiritCaverns': {frozenset({'Bash', 'Dash'})}}, 'dbash': {'MidSpiritCaverns': {frozenset({'Bash'})}}, 'master-core': {'MidSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'LowerValley': {'casual-core': {'LowerValleyPlantApproach': {frozenset({'Glide', 'Wind'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Glide', 'ChargeJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Glide', 'Wind'})}, 'ValleyTeleporter': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}}, 'standard-lure': {'LowerValleyPlantApproach': {frozenset({'Bash'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash', 'Grenade'})}, 'ValleyTeleporter': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'OpenWorld', 'Grenade', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'standard-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', 1)})}}, 'expert-dboost': {'ValleyThreeBirdLever': {frozenset({('HC', -1)})}}, 'dbash': {'ValleyThreeBirdLever': {frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'MistyEntrance': {frozenset({'Dash', ('AC', 6)})}, 'ValleyTeleporter': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-lure': {'MistyEntrance': {frozenset({'Bash'})}, 'ValleyTeleporter': {frozenset({'Bash', 'OpenWorld'})}}}, 'MidSpiritCaverns': {'casual-core': {'GladesLaserArea': {frozenset({('EC', 4)})}, 'UpperSpiritCaverns': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'glitched': {'GladesLaserArea': {frozenset({('EC', 3)})}}, 'casual-dboost': {'UpperSpiritCaverns': {frozenset({'DoubleJump'})}}, 'standard-core': {'UpperSpiritCaverns': {frozenset({'Bash'})}}}, 'MiddleSorrow': {'casual-core': {'UpperSorrow': {frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Glide'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Stomp'})}, 'LowerSorrow': {frozenset({'Stomp'})}}, 'gjump': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'UpperSorrow': {frozenset({'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'ChargeJump', ('HC', 2)})}}, 'master-dboost': {'UpperSorrow': {frozenset({('AC', 12), 'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'LeftSorrow': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'LeftSorrowKeystones': {frozenset({'Climb', 'Dash', 'Stomp', ('AC', 6)}), frozenset({('AC', 6), 'Dash', 'Stomp', 'WallJump'})}, 'SorrowMainShaftKeystoneArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}, 'LowerSorrow': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Climb', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'SorrowMainShaftKeystoneArea': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'LowerSorrow': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}, 'SunstoneArea': {frozenset({'Glide', 'Bash'})}}}, 'MistyAbove200xp': {'casual-core': {'MistyBeforeMiniBoss': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'MistyBeforeMiniBoss': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'standard-abilities': {'MistyBeforeMiniBoss': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyBeforeMiniBoss': {frozenset({'Bash'})}}}, 'MistyBeforeDocks': {'casual-core': {'MistyAbove200xp': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'Climb', 'DoubleJump'})}}, 'standard-core': {'MistyAbove200xp': {frozenset({'Glide', 'ChargeJump'})}}, 'standard-abilities': {'MistyAbove200xp': {frozenset({'Bash', ('AC', 6), 'Dash'}), frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'expert-abilities': {'MistyAbove200xp': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'MistyAbove200xp': {frozenset({'Bash'})}}}, 'MistyBeforeMiniBoss': {'casual-core': {'MistyOrbRoom': {frozenset({('KS', 4)})}}}, 'MistyEntrance': {'casual-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Glide', 'Bash', 'Climb'})}}, 'standard-core': {'MistyPostFeatherTutorial': {frozenset({'Glide', 'Bash'})}}, 'standard-abilities': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)}), frozenset({'Dash', 'Glide', ('AC', 3), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'expert-core': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'Glide', 'ChargeJump', 'DoubleJump'})}}, 'expert-dboost': {'MistyPostFeatherTutorial': {frozenset({('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'MistyPostFeatherTutorial': {frozenset({'Dash', ('AC', 6), ('EC', 4)}), frozenset({'Dash', 'Glide', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'master-core': {'MistyPostFeatherTutorial': {frozenset({'Bash'})}}, 'gjump': {'MistyPostFeatherTutorial': {frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 1)})}}}, 'MistyKeystone3Ledge': {'casual-core': {'MistyPreLasers': {frozenset({'Glide'})}}, 'standard-abilities': {'MistyPreLasers': {frozenset({('AC', 12), 'DoubleJump'}), frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'MistyPreLasers': {frozenset({'Grenade', 'Bash'}), frozenset({'Dash', 'DoubleJump'})}}, 'expert-dboost': {'MistyPreLasers': {frozenset({'ChargeJump', ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'MistyPreLasers': {frozenset({('HC', 4), 'WallJump'})}}, 'gjump': {'MistyPreLasers': {frozenset({'Grenade', 'Climb', 'ChargeJump'})}}}, 'MistyKeystone4Ledge': {'casual-core': {'MistyBeforeDocks': {frozenset({'Glide', 'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump', 'Glide'}), frozenset({'Climb', 'Bash', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyBeforeDocks': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyBeforeDocks': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyBeforeDocks': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 7)})}}, 'master-lure': {'MistyBeforeDocks': {frozenset({'Bash'})}}}, 'MistyMortarSpikeCave': {'casual-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}}, 'standard-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone4Ledge': {frozenset({'Glide', 'Bash'})}}, 'expert-abilities': {'MistyKeystone4Ledge': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'master-core': {'MistyKeystone4Ledge': {frozenset({'Bash'})}}, 'master-abilities': {'MistyKeystone4Ledge': {frozenset({'Dash', ('AC', 6)}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'MistyOrbRoom': {'casual-core': {'MistyPreKeystone2': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}}, 'master-core': {'MistyPreKeystone2': {frozenset({'DoubleJump'})}}}, 'MistyPostClimb': {'casual-core': {'MistySpikeCave': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistySpikeCave': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'MistySpikeCave': {frozenset({'ChargeJump'})}}, 'expert-abilities': {'MistySpikeCave': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'dbash': {'MistySpikeCave': {frozenset({'Bash'})}}, 'master-core': {'MistySpikeCave': {frozenset({'DoubleJump'})}}}, 'MistyPostFeatherTutorial': {'casual-core': {'MistyPostKeystone1': {frozenset({'Free'})}}}, 'MistyPostKeystone1': {'casual-core': {'MistyPreMortarCorridor': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyPreMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 6)}), frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-core': {'MistyPreMortarCorridor': {frozenset({'Bash'})}}, 'master-abilities': {'MistyPreMortarCorridor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'MistyPreMortarCorridor': {frozenset({('HC', 3)}), frozenset({('AC', 12), ('HC', 1)})}}}, 'MistyPostLasers': {'casual-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'standard-core': {'MistyMortarSpikeCave': {frozenset({'Glide', 'Bash'})}}, 'expert-core': {'MistyMortarSpikeCave': {frozenset({'Glide'})}}, 'master-core': {'MistyMortarSpikeCave': {frozenset({'Bash'})}}}, 'MistyPostMortarCorridor': {'casual-core': {'MistyPrePlantLedge': {frozenset({'Bash'})}}, 'standard-core': {'MistyPrePlantLedge': {frozenset({'ChargeJump', 'WallJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'ChargeJump'})}}, 'master-core': {'MistyPrePlantLedge': {frozenset({'DoubleJump'})}}, 'master-abilities': {'MistyPrePlantLedge': {frozenset({'Dash', ('AC', 6)})}}}, 'MistyPreClimb': {'casual-core': {'MistyPostClimb': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Stomp'})}}, 'expert-core': {'MistyPostClimb': {frozenset({'Grenade', 'Bash', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump', 'WallJump'})}}, 'master-core': {'MistyPostClimb': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'glitched': {'ForlornTeleporter': {frozenset({'Dash'})}, 'RightForlorn': {frozenset({'Dash'})}}}, 'MistyPreLasers': {'casual-core': {'MistyPostLasers': {frozenset({'Climb', 'Glide', 'WallJump'})}}, 'standard-core': {'MistyPostLasers': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'expert-core': {'MistyPostLasers': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MistyPostLasers': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistyPreMortarCorridor': {'casual-core': {'MistyPostMortarCorridor': {frozenset({'Glide'})}}, 'expert-dboost': {'MistyPostMortarCorridor': {frozenset({'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({'Dash', 'DoubleJump', ('AC', 3), ('HC', 1)})}}, 'master-core': {'MistyPostMortarCorridor': {frozenset({'Grenade', 'Bash', 'DoubleJump'})}}, 'master-abilities': {'MistyPostMortarCorridor': {frozenset({'Dash', ('AC', 6)})}}, 'master-dboost': {'MistyPostMortarCorridor': {frozenset({('AC', 12), ('HC', 6)}), frozenset({('HC', 7)})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'MistyPrePlantLedge': {'casual-core': {'MistyPreClimb': {frozenset({'ChargeJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'})}}, 'standard-core': {'MistyPreClimb': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'})}}, 'expert-core': {'MistyPreClimb': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'WallJump'})}}, 'master-core': {'MistyPreClimb': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}}, 'MistySpikeCave': {'casual-core': {'MistyKeystone3Ledge': {frozenset({'Climb', 'DoubleJump', 'WallJump'})}}, 'standard-core': {'MistyKeystone3Ledge': {frozenset({'Glide', 'Bash', 'DoubleJump'})}}, 'expert-core': {'MistyKeystone3Ledge': {frozenset({'DoubleJump'})}}, 'master-core': {'MistyKeystone3Ledge': {frozenset({'Bash'})}}, 'master-dboost': {'MistyKeystone3Ledge': {frozenset({'ChargeJump', ('HC', 1)})}}}, 'MoonGrotto': {'casual-core': {'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'DeathGauntlet': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'WaterVeinArea': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrottoBelowTeleporter': {frozenset({'DoubleJump'}), frozenset({'Glide', 'ChargeJump'})}}, 'master-core': {'MoonGrottoAboveTeleporter': {frozenset({'DoubleJump'})}}, 'expert-abilities': {'MoonGrottoAboveTeleporter': {frozenset({'Dash', ('AC', 6), ('EC', 1)})}}, 'standard-core': {'WaterVeinArea': {frozenset({'Dash'})}}, 'expert-core': {'WaterVeinArea': {frozenset({'WallJump'})}}, 'master-lure': {'WaterVeinArea': {frozenset({'Bash'})}}, 'standard-dboost': {'MoonGrottoBelowTeleporter': {frozenset({'Glide', ('HC', 1)})}}, 'standard-abilities': {'MoonGrottoBelowTeleporter': {frozenset({'Dash', ('AC', 3)})}}}, 'MoonGrottoAboveTeleporter': {'casual-core': {'UpperGrotto': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}, 'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'standard-core': {'UpperGrotto': {frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'UpperGrotto': {frozenset({'Climb', 'Glide'})}, 'MoonGrottoStompPlantAccess': {frozenset({'ChargeFlame'})}}, 'master-core': {'UpperGrotto': {frozenset({'DoubleJump'}), frozenset({'Bash', 'Dash', ('AC', 3)})}}, 'casual-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'ChargeJump', ('HC', 0)})}}, 'expert-dboost': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('HC', 1)})}}, 'expert-abilities': {'MoonGrottoSwampAccessArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'MoonGrottoSwampAccessArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-lure': {'DeathGauntletRoof': {frozenset({'Bash'})}, 'MoonGrottoBelowTeleporter': {frozenset({'Bash'})}}}, 'MoonGrottoSwampAccessArea': {'casual-core': {'InnerSwampAboveDrainArea': {frozenset({'ChargeJump'})}}, 'standard-lure': {'InnerSwampAboveDrainArea': {frozenset({'Bash'})}}, 'expert-lure': {'InnerSwampAboveDrainArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'Climb', 'ChargeFlame'})}}, 'master-lure': {'InnerSwampAboveDrainArea': {frozenset({'Grenade', 'DoubleJump'})}}}, 'OuterSwampAbilityCellNook': {'glitched': {'InnerSwampSkyArea': {frozenset({'Dash'})}}}, 'OuterSwampLowerArea': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Bash'})}, 'OuterSwampUpperArea': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'})}, 'OuterSwampAbilityCellNook': {frozenset({'Glide', 'Wind'}), frozenset({'Grenade', 'Bash'})}, 'OuterSwampMortarPlantAccess': {frozenset({'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Bash'})}, 'SwampEntryArea': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}, 'UpperGrotto': {frozenset({'Glide', 'Wind'}), frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'Bash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Dash', ('AC', 6)})}, 'OuterSwampUpperArea': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'OuterSwampMortarAbilityCellLedge': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}, 'expert-core': {'OuterSwampUpperArea': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}}, 'OuterSwampMortarAbilityCellLedge': {'expert-core': {'OuterSwampMortarPlantAccess': {frozenset({'ChargeFlame'})}}}, 'OuterSwampUpperArea': {'casual-core': {'GinsoOuterDoor': {frozenset({'GinsoKey'})}, 'OuterSwampAbilityCellNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'OuterSwampAbilityCellNook': {frozenset({'Free'})}}}, 'OutsideForlorn': {'casual-core': {'OutsideForlornCliff': {frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'}), frozenset({'Glide', 'Bash'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'})}, 'ForlornOuterDoor': {frozenset({'ForlornKey'})}}, 'expert-abilities': {'OutsideForlornCliff': {frozenset({'Dash', ('AC', 6)})}}, 'dbash': {'OutsideForlornCliff': {frozenset({'Bash'})}}, 'master-core': {'OutsideForlornCliff': {frozenset({'ChargeJump', 'DoubleJump'})}}, 'glitched': {'RightForlorn': {frozenset({'Free'})}}}, 'OutsideForlornCliff': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp', 'ChargeJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'DoubleJump', 'Bash'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Grenade', 'Stomp', 'Bash'})}}, 'expert-core': {'ValleyForlornApproach': {frozenset({'ChargeFlame', 'Stomp', 'WallJump'}), frozenset({'ChargeFlame', 'Stomp', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Stomp', 'ChargeJump'})}}, 'master-core': {'ValleyForlornApproach': {frozenset({'Bash'})}}}, 'R1': {'casual-core': {'HoruR1MapstoneSecret': {frozenset({'DoubleJump'}), frozenset({'Glide'})}}, 'standard-core': {'HoruR1MapstoneSecret': {frozenset({'Grenade', 'Bash'})}}, 'standard-abilities': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 3)})}}, 'expert-dboost': {'HoruR1MapstoneSecret': {frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Bash', ('HC', 2)}), frozenset({'Dash', ('HC', 2)})}}, 'master-dboost': {'HoruR1MapstoneSecret': {frozenset({'Dash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 6)}), frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({'Bash', ('AC', 12), ('HC', 1)}), frozenset({('HC', 4), ('AC', 12)})}}, 'gjump': {'HoruR1MapstoneSecret': {frozenset({('AC', 12), 'Climb', 'Grenade', 'ChargeJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'Grenade', ('HC', 2)}), frozenset({'Climb', 'Stomp', 'ChargeJump', 'Grenade'})}}}, 'R1OuterDoor': {'expert-core': {'L1OuterDoor': {frozenset({'Free'})}}}, 'R3': {'casual-core': {'HoruR3ElevatorLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Bash', 'Climb'})}}, 'expert-core': {'HoruR3ElevatorLever': {frozenset({'Grenade', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'WallJump'})}}, 'master-abilities': {'HoruR3ElevatorLever': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'ChargeJump', 'DoubleJump'})}}}, 'R3OuterDoor': {'casual-core': {'HoruInnerDoor': {frozenset({'Stomp'})}}}, 'R4': {'casual-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Grenade', 'Bash', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'ChargeFlame', 'Bash', 'Grenade'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'HoruR4StompHideout': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'HoruR4StompHideout': {frozenset({'ChargeFlame', 'Bash'}), frozenset({'Bash', 'Stomp'})}}, 'expert-abilities': {'HoruR4StompHideout': {frozenset({'Bash', ('AC', 6), 'Dash'})}}, 'expert-dboost': {'HoruR4StompHideout': {frozenset({('HC', 3), 'Bash'})}}, 'dbash': {'HoruR4StompHideout': {frozenset({'Bash'})}}}, 'RazielNoArea': {'casual-core': {'BlackrootGrottoConnection': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}, 'standard-core': {'BlackrootGrottoConnection': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}, 'expert-core': {'BlackrootGrottoConnection': {frozenset({'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'WallJump'})}}, 'expert-dboost': {'BlackrootGrottoConnection': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'glitched': {'BlackrootGrottoConnection': {frozenset({'Climb'})}, 'GumoHideout': {frozenset({'Grenade', 'Dash', 'Bash'}), frozenset({'Dash', 'WallJump'}), frozenset({'Dash', 'ChargeJump'}), frozenset({'Climb', 'Dash', 'DoubleJump'})}}}, 'SorrowBashLedge': {'casual-core': {'LowerSorrow': {frozenset({'Glide', 'Wind'})}}, 'expert-lure': {'LowerSorrow': {frozenset({'Climb', 'Dash', 'Glide', 'DoubleJump', 'Bash'}), frozenset({'Dash', 'Glide', 'DoubleJump', 'WallJump', 'Bash'})}}, 'dbash': {'LowerSorrow': {frozenset({'Bash'})}}, 'expert-dboost': {'LowerSorrow': {frozenset({'Climb', 'ChargeJump', ('HC', 6)}), frozenset({'ChargeJump', ('HC', 6), 'WallJump'})}}, 'master-dboost': {'LowerSorrow': {frozenset({('AC', 12), ('HC', 4), 'ChargeJump', 'WallJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', ('AC', 12)}), frozenset({('AC', 12), ('HC', 10), 'DoubleJump', 'WallJump'})}}}, 'SorrowMapstoneArea': {'glitched': {'HoruInnerDoor': {frozenset({'Dash'})}}}, 'SorrowTeleporter': {'casual-core': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'Stomp', 'ChargeJump'})}}, 'standard-core': {'BelowSunstoneArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'})}, 'AboveChargeJumpArea': {frozenset({'Climb', 'ChargeJump'})}}, 'gjump': {'BelowSunstoneArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'expert-dboost': {'BelowSunstoneArea': {frozenset({'Grenade', 'Stomp', ('HC', 2), 'Bash'}), frozenset({'Climb', 'ChargeJump', ('HC', 2)}), frozenset({'Glide', 'ChargeJump', 'WallJump', ('HC', 2)}), frozenset({'WallJump', 'Dash', ('HC', 2), 'ChargeJump', ('AC', 3)})}, 'AboveChargeJumpArea': {frozenset({('HC', 2), 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'master-core': {'BelowSunstoneArea': {frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Climb', 'Stomp', 'Bash'})}, 'AboveChargeJumpArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp', 'Bash'})}}, 'master-dboost': {'BelowSunstoneArea': {frozenset({'Climb', ('AC', 12), 'ChargeJump', ('HC', 1)}), frozenset({('AC', 12), 'Dash', ('HC', 1), 'ChargeJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), ('HC', 1), 'Glide', 'ChargeJump', 'WallJump'})}}, 'expert-core': {'AboveChargeJumpArea': {frozenset({'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Glide', 'ChargeJump', 'DoubleJump', 'WallJump', 'Bash'})}}, 'expert-abilities': {'AboveChargeJumpArea': {frozenset({'WallJump', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}}, 'SpiderSacArea': {'casual-core': {'SpiderSacTetherArea': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'SpiderWaterArea': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiderSacEnergyNook': {frozenset({'DoubleJump'}), frozenset({'Glide'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade', 'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacTetherArea': {frozenset({'DoubleJump'})}, 'SpiritTreeRefined': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}}, 'standard-core': {'SpiritTreeRefined': {frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}}, 'SpiderSacEnergyNook': {'master-abilities': {'ChargeFlameAreaPlantAccess': {frozenset({'ChargeFlame', ('AC', 3)})}}}, 'SpiderSacTetherArea': {'casual-core': {'SpiderWaterArea': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacEnergyNook': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-abilities': {'SpiderWaterArea': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}, 'SpiderSacEnergyNook': {frozenset({'Grenade', 'Dash', ('AC', 6), 'Bash'}), frozenset({('AC', 6), 'Dash', 'ChargeJump'})}}}, 'SpiderWaterArea': {'casual-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'SpiderSacArea': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'Bash', 'WallJump'}), frozenset({'Climb', 'Bash', 'Glide'})}, 'HollowGrove': {frozenset({'Climb'}), frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'DeathGauntletRoof': {frozenset({'Stomp', 'WallJump', 'Water'}), frozenset({'Bash', 'Stomp', 'Water'}), frozenset({'Climb', 'Stomp', 'Water'})}}, 'standard-core': {'SpiderSacEnergyNook': {frozenset({'Dash', 'DoubleJump'}), frozenset({'Bash', 'DoubleJump'})}, 'SpiderSacArea': {frozenset({'Climb', 'Bash'}), frozenset({'Glide', 'Dash', 'WallJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Climb', 'Dash', 'Glide'})}, 'HollowGrove': {frozenset({'Bash'})}}, 'expert-core': {'SpiderSacEnergyNook': {frozenset({'DoubleJump'})}}, 'dbash': {'SpiderSacEnergyNook': {frozenset({'Bash'})}, 'SpiderSacArea': {frozenset({'Bash'})}}, 'expert-abilities': {'SpiderSacEnergyNook': {frozenset({'Dash', ('AC', 3)})}, 'SpiderSacArea': {frozenset({'Dash', ('AC', 6)})}}, 'gjump': {'SpiderSacEnergyNook': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-core': {'SpiderSacArea': {frozenset({'Climb', 'ChargeJump'})}}, 'master-abilities': {'HollowGrove': {frozenset({'Dash', ('AC', 6)})}}, 'expert-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('HC', 2)}), frozenset({'Stomp', 'WallJump', ('HC', 2)}), frozenset({'Bash', 'Stomp', ('HC', 1)}), frozenset({'Stomp', 'DoubleJump', ('HC', 2)})}}, 'master-dboost': {'DeathGauntletRoof': {frozenset({'Climb', 'Stomp', ('AC', 12)}), frozenset({'Stomp', ('AC', 12), 'WallJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}}, 'SpiritCavernsDoor': {'casual-core': {'SpiritCavernsDoorOpened': {frozenset({('KS', 2)})}}}, 'SpiritCavernsDoorOpened': {'casual-core': {'LowerSpiritCaverns': {frozenset({'ChargeJump'}), frozenset({'WallJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb'})}}, 'standard-lure': {'LowerSpiritCaverns': {frozenset({'Bash'})}}, 'expert-abilities': {'LowerSpiritCaverns': {frozenset({'Dash', ('AC', 6)})}}, 'master-core': {'LowerSpiritCaverns': {frozenset({'DoubleJump'})}}}, 'SpiritTreeDoor': {'casual-core': {'SpiritTreeDoorOpened': {frozenset({('KS', 4)})}}}, 'SpiritTreeDoorOpened': {'casual-core': {'SpiritTreeRefined': {frozenset({'Climb'}), frozenset({'Bash'}), frozenset({'WallJump'})}}, 'casual-dboost': {'SpiritTreeRefined': {frozenset({'ChargeJump'})}}, 'master-core': {'SpiritTreeRefined': {frozenset({'DoubleJump'})}}}, 'SpiritTreeRefined': {'casual-core': {'SpiritTreeDoor': {frozenset({'Open'})}, 'ValleyEntry': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}, 'SpiderSacArea': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'Glide'}), frozenset({'Grenade', 'WallJump'}), frozenset({'ChargeFlame', 'Climb', 'DoubleJump'}), frozenset({'ChargeFlame', 'Climb', 'Dash'}), frozenset({'Grenade', 'Climb', 'Glide'}), frozenset({'Grenade', 'Climb', 'DoubleJump'}), frozenset({'Grenade', 'ChargeJump'}), frozenset({'Grenade', 'Climb', 'Dash'}), frozenset({'Grenade', 'Bash'}), frozenset({'ChargeFlame', 'ChargeJump'})}}, 'standard-core': {'ValleyEntry': {frozenset({'Stomp', 'DoubleJump'}), frozenset({'Climb', 'Stomp'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6)})}, 'SpiderSacArea': {frozenset({'Climb', 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'WallJump'})}}, 'expert-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'Climb'}), frozenset({'Grenade', 'Climb'})}}, 'master-core': {'SpiderSacArea': {frozenset({'ChargeFlame', 'DoubleJump'}), frozenset({'Grenade', 'DoubleJump'})}}, 'master-abilities': {'SpiderSacArea': {frozenset({'Dash', ('AC', 6), 'DoubleJump'})}}}, 'SunkenGladesRunaway': {'casual-core': {'GladesMain': {frozenset({('KS', 2)}), frozenset({'OpenWorld'})}, 'BlackrootDarknessRoom': {frozenset({'ChargeJump'}), frozenset({'Climb'}), frozenset({'Grenade', 'Bash'}), frozenset({'WallJump'})}, 'DeathGauntletDoor': {frozenset({'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'SpiritTreeRefined': {frozenset({'TPGrove'})}, 'MoonGrotto': {frozenset({'TPGrotto'})}, 'SwampTeleporter': {frozenset({'TPSwamp'})}, 'ValleyTeleporter': {frozenset({'TPValley'})}, 'SorrowTeleporter': {frozenset({'TPSorrow'})}, 'GinsoTeleporter': {frozenset({'TPGinso'})}, 'ForlornTeleporter': {frozenset({'TPForlorn'})}, 'HoruTeleporter': {frozenset({'TPHoru', 'HoruKey'})}}, 'glitched': {'LowerChargeFlameArea': {frozenset({'Grenade'})}}, 'master-core': {'BlackrootDarknessRoom': {frozenset({'DoubleJump'})}, 'DeathGauntletDoor': {frozenset({'DoubleJump'})}}, 'casual-dboost': {'DeathGauntletDoor': {frozenset({'Climb'}), frozenset({'WallJump'})}}, 'standard-lure': {'DeathGauntletDoor': {frozenset({'Bash'})}}}, 'SunstoneArea': {'casual-core': {'UpperSorrow': {frozenset({'Stomp'})}, 'SorrowTeleporter': {frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'standard-core': {'UpperSorrow': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-dboost': {'SorrowTeleporter': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 2)})}}}, 'Swamp': {'casual-core': {'SwampDrainlessArea': {frozenset({'Stomp'})}, 'SwampKeyDoorPlatform': {frozenset({'Grenade', 'Bash'}), frozenset({'Glide'}), frozenset({'ChargeJump'}), frozenset({'Water'}), frozenset({'DoubleJump'})}, 'SwampWater': {frozenset({'Water'})}}, 'expert-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}}, 'casual-dboost': {'SwampKeyDoorPlatform': {frozenset({'Free'})}}, 'standard-core': {'SwampKeyDoorPlatform': {frozenset({'Dash'})}}, 'master-dboost': {'SwampWater': {frozenset({('HC', 4), ('AC', 12)}), frozenset({('HC', 12)})}}}, 'SwampEntryArea': {'casual-core': {'SwampDrainlessArea': {frozenset({'Climb', 'Stomp'}), frozenset({'Grenade', 'Stomp', 'Bash'}), frozenset({'Stomp', 'WallJump'}), frozenset({'Stomp', 'ChargeJump'})}, 'Swamp': {frozenset({'Stomp', 'ChargeJump'})}}, 'standard-core': {'SwampDrainlessArea': {frozenset({'Climb', 'ChargeJump'})}, 'Swamp': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'SwampDrainlessArea': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'Swamp': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}}}, 'SwampKeyDoorOpened': {'casual-core': {'RightSwamp': {frozenset({'Bash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'Grenade'})}}, 'standard-core': {'RightSwamp': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}}, 'standard-dboost': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', ('HC', 0)}), frozenset({'ChargeJump', ('HC', 0), 'WallJump'}), frozenset({('HC', 0), 'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Glide', 'DoubleJump', ('HC', 0)})}}, 'expert-dboost': {'RightSwamp': {frozenset({'Climb', 'DoubleJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', ('HC', 0), 'WallJump', 'Water'}), frozenset({'DoubleJump', 'WallJump', ('HC', 2)}), frozenset({'Climb', 'Dash', ('AC', 6), ('HC', 0)}), frozenset({('AC', 6), ('HC', 0), 'Dash', ('EC', 3), 'Bash'}), frozenset({'Dash', ('AC', 6), ('HC', 0), 'WallJump'})}}, 'expert-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6), ('EC', 2)})}}, 'dbash': {'RightSwamp': {frozenset({'Bash', 'Water'}), frozenset({'Bash', ('HC', 2)})}}, 'master-dboost': {'RightSwamp': {frozenset({('HC', 9), 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', ('HC', 1)}), frozenset({('HC', 4), 'DoubleJump'}), frozenset({('AC', 12), 'WallJump', 'Water', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12), 'WallJump'}), frozenset({('HC', 6), 'WallJump', 'Water'})}}, 'master-abilities': {'RightSwamp': {frozenset({('EC', 2), 'Dash', ('AC', 6), 'DoubleJump'})}}, 'gjump': {'RightSwamp': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampKeyDoorPlatform': {'casual-core': {'SwampKeyDoorOpened': {frozenset({('KS', 2)})}, 'InnerSwampSkyArea': {frozenset({'Glide', 'Wind'})}}, 'standard-core': {'InnerSwampSkyArea': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump', 'DoubleJump'})}}, 'dbash': {'InnerSwampSkyArea': {frozenset({'Bash'})}}, 'gjump': {'InnerSwampSkyArea': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'SwampTeleporter': {'glitched': {'OuterSwampMortarAbilityCellLedge': {frozenset({'Free'})}}}, 'TopGinsoTree': {'casual-core': {'GinsoEscape': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}}, 'standard-core': {'GinsoEscape': {frozenset({'Bash'}), frozenset({'Stomp', 'ChargeJump'})}}, 'standard-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Climb', 'Dash', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Glide', 'Stomp', 'DoubleJump', 'WallJump'}), frozenset({('HC', 0), 'Climb', 'Glide', 'Stomp', 'DoubleJump'}), frozenset({('HC', 0), 'Dash', 'Stomp', 'DoubleJump', 'WallJump'})}}, 'expert-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 6), 'Dash'})}}, 'master-abilities': {'GinsoEscape': {frozenset({'Stomp', ('AC', 12), 'DoubleJump'})}}, 'master-dboost': {'GinsoEscape': {frozenset({('HC', 0), 'Stomp', 'DoubleJump', 'Dash'}), frozenset({'Glide', 'Stomp', 'DoubleJump', ('HC', 0)})}}}, 'UpperGinsoDoorClosed': {'casual-core': {'UpperGinsoDoorOpened': {frozenset({('KS', 4)})}}}, 'UpperGinsoDoorOpened': {'casual-core': {'GinsoTeleporter': {frozenset({'Glide', 'Bash'}), frozenset({'Bash', 'DoubleJump'})}, 'UpperGinsoTree': {frozenset({'Open', 'Bash'}), frozenset({'Open', 'DoubleJump'}), frozenset({'Glide', 'Open'})}}, 'standard-core': {'GinsoTeleporter': {frozenset({'Bash'})}}, 'expert-dboost': {'GinsoTeleporter': {frozenset({'ChargeJump', ('HC', 2)}), frozenset({('HC', 0), 'ChargeJump', 'DoubleJump'})}}, 'master-dboost': {'GinsoTeleporter': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 2)})}}, 'casual-dboost': {'UpperGinsoTree': {frozenset({'Open', ('HC', 0)})}}, 'standard-abilities': {'UpperGinsoTree': {frozenset({'Open', 'Dash', ('AC', 3)})}}}, 'UpperGinsoRedirectArea': {'casual-core': {'UpperGinsoTree': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'BashTree': {frozenset({'DoubleJump'}), frozenset({'Bash'})}}, 'master-abilities': {'UpperGinsoTree': {frozenset({'ChargeFlame', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Grenade', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Grenade', 'Climb', ('AC', 12), 'DoubleJump'}), frozenset({'Stomp', ('AC', 12), 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Stomp', ('AC', 12), 'DoubleJump'}), frozenset({'ChargeFlame', ('AC', 12), 'DoubleJump', 'WallJump'})}}, 'standard-abilities': {'BashTree': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'BashTree': {frozenset({'Glide', ('HC', 1)}), frozenset({'Dash', ('HC', 1)}), frozenset({'WallJump', ('HC', 1)}), frozenset({'ChargeJump', ('HC', 1)}), frozenset({'Climb', ('HC', 1)})}}}, 'UpperGinsoTree': {'casual-core': {'UpperGinsoDoorClosed': {frozenset({'Free'})}, 'UpperGinsoRedirectArea': {frozenset({'Bash', 'ChargeJump'}), frozenset({'Stomp'})}}, 'standard-core': {'UpperGinsoRedirectArea': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-core': {'UpperGinsoRedirectArea': {frozenset({'ChargeFlame', 'ChargeJump'})}}, 'expert-abilities': {'UpperGinsoRedirectArea': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'master-core': {'UpperGinsoRedirectArea': {frozenset({'Bash'})}}}, 'UpperGrotto': {'casual-core': {'OuterSwampMortarAbilityCellLedge': {frozenset({'ChargeJump'})}, 'MoonGrottoStompPlantAccess': {frozenset({'Stomp'})}, 'OuterSwampLowerArea': {frozenset({'Grenade', 'Bash'}), frozenset({'Climb'}), frozenset({'WallJump'}), frozenset({'ChargeJump'})}, 'Iceless': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Glide'}), frozenset({'Climb'}), frozenset({'Dash'}), frozenset({'WallJump'}), frozenset({'DoubleJump'})}}, 'standard-core': {'MoonGrottoStompPlantAccess': {frozenset({'Climb', 'ChargeJump'})}, 'Iceless': {frozenset({'Grenade', 'Bash'})}, 'MoonGrottoAboveTeleporter': {frozenset({'Grenade', 'Bash'})}}, 'master-core': {'MoonGrottoStompPlantAccess': {frozenset({'Bash'})}, 'Iceless': {frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'})}}, 'expert-core': {'OuterSwampLowerArea': {frozenset({'DoubleJump'})}}, 'standard-dboost': {'Iceless': {frozenset({'ChargeJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', ('HC', 1)})}}, 'standard-abilities': {'Iceless': {frozenset({'Climb', 'Dash', ('AC', 3)})}}, 'gjump': {'Iceless': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'glitched': {'MoonGrottoAboveTeleporter': {frozenset({'Free'})}}}, 'UpperSorrow': {'glitched': {'SunstoneArea': {frozenset({'Glide', 'ChargeJump'})}, 'SorrowTeleporter': {frozenset({'Climb', 'Glide', 'ChargeJump'})}}, 'casual-core': {'ChargeJumpDoor': {frozenset({'Free'})}}}, 'UpperSpiritCaverns': {'casual-core': {'SpiritTreeDoor': {frozenset({'Free'})}}}, 'ValleyEntry': {'casual-core': {'ValleyEntryTree': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Climb', 'Bash'}), frozenset({'WallJump'})}, 'ValleyEntryTreePlantAccess': {frozenset({'Grenade', 'ChargeJump'}), frozenset({'ChargeFlame', 'ChargeJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', 'WallJump'}), frozenset({'OpenWorld', 'DoubleJump', 'WallJump'}), frozenset({'Stomp', 'WallJump', 'Bash'}), frozenset({'Climb', 'Stomp', 'ChargeJump'}), frozenset({'Stomp', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'Stomp', 'DoubleJump'}), frozenset({'ChargeJump', 'OpenWorld', 'WallJump'}), frozenset({'Climb', 'OpenWorld', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld', 'WallJump'})}, 'ValleyThreeBirdLever': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'DoubleJump'})}, 'ValleyStompFloor': {frozenset({'Glide', 'OpenWorld', 'Wind'}), frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'DoubleJump', 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'standard-lure': {'ValleyEntryTree': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyEntryTree': {frozenset({'ChargeJump', ('HC', 1)})}, 'ValleyPostStompDoor': {frozenset({'Stomp', 'ChargeJump', ('HC', 1)}), frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)}), frozenset({'Bash', 'ChargeJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyEntryTree': {frozenset({'Dash', ('AC', 6)})}, 'ValleyEntryTreePlantAccess': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}, 'ValleyThreeBirdLever': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'SpiritTreeRefined': {frozenset({'Dash', ('AC', 6)})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'ChargeFlame', 'WallJump'}), frozenset({'Grenade'})}}, 'expert-lure': {'ValleyPostStompDoor': {frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Climb', 'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'})}}, 'standard-core': {'ValleyThreeBirdLever': {frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'})}, 'ValleyStompFloor': {frozenset({'Glide', 'Dash', 'OpenWorld'}), frozenset({'Dash', 'DoubleJump', 'OpenWorld'})}}, 'gjump': {'ValleyThreeBirdLever': {frozenset({'Climb', 'OpenWorld', 'ChargeJump', 'Grenade'})}}, 'standard-abilities': {'ValleyStompFloor': {frozenset({'Dash', 'ChargeJump', 'OpenWorld', ('AC', 3)})}}, 'standard-dboost': {'ValleyStompFloor': {frozenset({'OpenWorld', ('HC', 1)})}}}, 'ValleyEntryTree': {'casual-core': {'ValleyEntryTreePlantAccess': {frozenset({'Climb', 'ChargeJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyPostStompDoor': {frozenset({'OpenWorld'})}}, 'expert-core': {'ValleyEntryTreePlantAccess': {frozenset({'Grenade'})}}, 'expert-abilities': {'ValleyEntryTreePlantAccess': {frozenset({'Dash', ('AC', 6)})}}}, 'ValleyForlornApproach': {'casual-core': {'OutsideForlornCliff': {frozenset({'ChargeJump'}), frozenset({'Bash'})}, 'ValleyStompFloor': {frozenset({'ChargeJump'})}}, 'standard-core': {'OutsideForlornCliff': {frozenset({'Stomp'})}}, 'master-core': {'ValleyStompFloor': {frozenset({'Bash'})}}}, 'ValleyMain': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Dash'}), frozenset({'Bash'}), frozenset({'DoubleJump'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)})}}, 'gjump': {'WilhelmLedge': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}}, 'ValleyPostStompDoor': {'casual-core': {'ValleyRight': {frozenset({'Climb', 'Bash'}), frozenset({'Bash', 'ChargeJump'}), frozenset({'Bash', 'WallJump'}), frozenset({'Grenade', 'Bash'})}, 'ValleyEntry': {frozenset({'OpenWorld'})}, 'ValleyEntryTree': {frozenset({'Bash', 'OpenWorld'}), frozenset({'OpenWorld', 'WallJump'}), frozenset({'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Climb', 'OpenWorld'})}}, 'expert-dboost': {'ValleyRight': {frozenset({('HC', 4), 'ChargeJump', 'DoubleJump', 'WallJump'})}}, 'dbash': {'ValleyRight': {frozenset({'Bash'})}}, 'master-dboost': {'ValleyRight': {frozenset({('HC', 0), ('AC', 12), 'Climb', 'ChargeJump', 'DoubleJump'}), frozenset({('HC', 0), ('AC', 12), 'ChargeJump', 'DoubleJump', 'WallJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump', ('HC', 8)})}}, 'gjump': {'ValleyRight': {frozenset({('AC', 12), 'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump'}), frozenset({('AC', 12), 'Climb', ('HC', 2), 'Grenade', 'ChargeJump'}), frozenset({'Climb', 'Grenade', 'Stomp', 'ChargeJump', 'DoubleJump', ('HC', 1)}), frozenset({('AC', 6), 'Climb', 'Dash', 'Grenade', 'ChargeJump'}), frozenset({'Climb', ('HC', 4), 'ChargeJump', 'Grenade'})}}, 'standard-core': {'ValleyEntryTree': {frozenset({'Dash', 'OpenWorld'})}}}, 'ValleyRight': {'expert-dboost': {'ValleyPostStompDoor': {frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyPostStompDoor': {frozenset({('HC', 4)}), frozenset({('AC', 12), ('HC', 2)})}}, 'casual-core': {'ValleyStomplessApproach': {frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump', 'WallJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'Bash', 'DoubleJump'}), frozenset({'Grenade', 'Bash', 'Climb'}), frozenset({'Bash', 'WallJump'})}}, 'expert-abilities': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), 'WallJump'})}}}, 'ValleyStompFloor': {'casual-core': {'ValleyForlornApproach': {frozenset({'Stomp'})}, 'ValleyThreeBirdLever': {frozenset({'Climb', 'ChargeJump'}), frozenset({'Bash'}), frozenset({'ChargeJump', 'DoubleJump', 'WallJump'})}, 'ValleyEntry': {frozenset({'OpenWorld', 'ChargeJump', 'DoubleJump'}), frozenset({'Bash', 'OpenWorld'}), frozenset({'Glide', 'ChargeJump', 'OpenWorld'})}}, 'standard-core': {'ValleyForlornApproach': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-lure': {'ValleyForlornApproach': {frozenset({'Bash'})}}, 'standard-dboost': {'ValleyEntry': {frozenset({'ChargeJump', 'OpenWorld', ('HC', 1)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({('HC', 0), 'OpenWorld', 'DoubleJump'}), frozenset({'OpenWorld', 'ChargeJump', ('HC', 0)})}}, 'expert-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}}, 'ValleyStompless': {'casual-core': {'WilhelmLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Bash'})}, 'ValleyStomplessApproach': {frozenset({'Bash'}), frozenset({'Glide'})}, 'MistyEntrance': {frozenset({'Bash', 'OpenWorld'}), frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'OpenWorld', 'DoubleJump'}), frozenset({'Dash', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}}, 'expert-abilities': {'WilhelmLedge': {frozenset({('EC', 2), 'Dash', ('AC', 6)}), frozenset({'Dash', ('AC', 6), 'DoubleJump'})}, 'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 6), ('EC', 3)})}}, 'expert-core': {'ValleyMain': {frozenset({'Bash'})}}, 'master-core': {'ValleyMain': {frozenset({'ChargeFlame'}), frozenset({'Grenade'})}}, 'expert-dboost': {'ValleyStomplessApproach': {frozenset({'Dash', ('AC', 3), ('HC', 1)}), frozenset({'DoubleJump', ('HC', 1)})}}, 'master-dboost': {'ValleyStomplessApproach': {frozenset({('HC', 7)}), frozenset({('HC', 4), 'ChargeJump'}), frozenset({('AC', 12), 'ChargeJump', ('HC', 2)}), frozenset({('HC', 4), ('AC', 12)})}}}, 'ValleyStomplessApproach': {'casual-core': {'ValleyStompless': {frozenset({'Bash'})}}, 'expert-dboost': {'ValleyStompless': {frozenset({'ChargeJump', 'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'ChargeJump', 'DoubleJump', ('HC', 1)})}}, 'expert-abilities': {'ValleyStompless': {frozenset({('EC', 2), 'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Climb', 'Dash', 'DoubleJump', ('EC', 2)})}}, 'master-dboost': {'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}}}, 'ValleyTeleporter': {'casual-core': {'ValleyPostStompDoor': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyRight': {frozenset({'Climb', 'Glide', 'ChargeJump'}), frozenset({'Climb', 'Glide', 'DoubleJump'}), frozenset({'Glide', 'DoubleJump', 'WallJump'}), frozenset({'Bash'})}, 'MistyEntrance': {frozenset({'Glide', 'OpenWorld'})}, 'LowerValley': {frozenset({'OpenWorld'})}, 'LowerValleyPlantApproach': {frozenset({'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'ChargeJump', 'OpenWorld'}), frozenset({'Glide', 'OpenWorld', 'Wind'})}}, 'expert-abilities': {'ValleyPostStompDoor': {frozenset({'Dash', ('AC', 6), 'DoubleJump'}), frozenset({'Dash', ('AC', 6), ('EC', 3)})}, 'ValleyRight': {frozenset({'Dash', ('AC', 6)})}, 'MistyEntrance': {frozenset({'Dash', 'DoubleJump', ('AC', 3), 'OpenWorld'}), frozenset({'Dash', ('AC', 6), 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6), 'OpenWorld'})}}, 'master-core': {'ValleyPostStompDoor': {frozenset({'DoubleJump'})}}, 'expert-dboost': {'ValleyRight': {frozenset({'DoubleJump', 'WallJump', ('HC', 1)}), frozenset({'Glide', 'WallJump', ('HC', 1)}), frozenset({'Climb', 'DoubleJump', ('HC', 1)}), frozenset({'Climb', 'Glide', ('HC', 1)})}}, 'gjump': {'ValleyRight': {frozenset({'Climb', 'ChargeJump', 'Grenade'})}}, 'master-abilities': {'ValleyRight': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump', 'WallJump', 'OpenWorld'})}}, 'standard-core': {'MistyEntrance': {frozenset({'Grenade', 'Bash', 'DoubleJump', 'OpenWorld'})}}, 'standard-abilities': {'MistyEntrance': {frozenset({'OpenWorld', 'Dash', 'ChargeJump', 'DoubleJump', ('AC', 3)})}}, 'expert-core': {'MistyEntrance': {frozenset({'Bash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Dash', 'ChargeJump', 'DoubleJump', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld'})}, 'ValleyStompless': {frozenset({'Climb', 'Bash', 'Grenade', 'OpenWorld'}), frozenset({'Grenade', 'Bash', 'OpenWorld', 'WallJump'})}}, 'master-lure': {'ValleyStompless': {frozenset({'Bash', 'OpenWorld', 'WallJump'})}}}, 'ValleyThreeBirdLever': {'casual-core': {'ValleyEntry': {frozenset({'Climb', 'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Bash'}), frozenset({'Glide'})}, 'LowerValley': {frozenset({'Glide', 'Wind'}), frozenset({'Glide', 'DoubleJump'})}}, 'standard-abilities': {'ValleyEntry': {frozenset({'Dash', ('AC', 3)})}, 'LowerValley': {frozenset({'Dash', ('AC', 3)})}}, 'standard-dboost': {'ValleyEntry': {frozenset({('HC', 4)})}, 'LowerValley': {frozenset({('HC', 4)})}}, 'expert-dboost': {'ValleyEntry': {frozenset({'Climb', ('HC', -1)}), frozenset({('HC', -1), 'WallJump'}), frozenset({('HC', -1), 'ChargeJump'})}, 'LowerValley': {frozenset({('HC', 2)})}}, 'standard-core': {'LowerValley': {frozenset({'Glide', 'Dash'}), frozenset({'Dash', 'DoubleJump'})}}, 'dbash': {'LowerValley': {frozenset({'Bash'})}}}, 'WaterVeinArea': {'casual-core': {'LeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'Glide', 'Wind'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'})}, 'LowerLeftGumoHideout': {frozenset({'ChargeJump'}), frozenset({'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Glide'})}, 'MoonGrotto': {frozenset({'DoubleJump', 'WallJump'}), frozenset({'ChargeJump', 'DoubleJump'}), frozenset({'Grenade', 'Bash'}), frozenset({'Climb', 'Glide'}), frozenset({'Glide', 'ChargeJump'}), frozenset({'Climb', 'ChargeJump'}), frozenset({'Climb', 'DoubleJump'}), frozenset({'Glide', 'WallJump'})}}, 'standard-core': {'LeftGumoHideout': {frozenset({'Dash'})}, 'LowerLeftGumoHideout': {frozenset({'Dash'})}, 'MoonGrotto': {frozenset({'Climb', 'Dash'}), frozenset({'Dash', 'WallJump'})}}}, 'WilhelmLedge': {'casual-core': {'SorrowBashLedge': {frozenset({'Glide', 'Wind'}), frozenset({'Dash', 'DoubleJump', 'WallJump'}), frozenset({'Glide', 'ChargeJump', 'WallJump'}), frozenset({'Bash'}), frozenset({'Climb', 'Glide', 'ChargeJump'})}, 'ValleyStompless': {frozenset({'Bash'}), frozenset({'Glide'})}, 'ValleyMain': {frozenset({'Stomp'})}}, 'standard-core': {'SorrowBashLedge': {frozenset({'Glide', 'Dash', 'Climb', 'DoubleJump'})}, 'ValleyMain': {frozenset({'Climb', 'ChargeJump'})}}, 'expert-abilities': {'SorrowBashLedge': {frozenset({'Dash', ('AC', 6), 'WallJump'}), frozenset({'Climb', 'Dash', ('AC', 6)})}, 'ValleyStompless': {frozenset({'Dash', ('AC', 6)})}}, 'master-abilities': {'SorrowBashLedge': {frozenset({'Climb', ('AC', 12), 'DoubleJump'}), frozenset({('AC', 12), 'DoubleJump', 'WallJump'})}, 'ValleyStompless': {frozenset({('AC', 12), 'DoubleJump'})}, 'ValleyMain': {frozenset({'Dash', 'ChargeJump', ('AC', 3)})}}, 'standard-abilities': {'ValleyStompless': {frozenset({'Dash', 'DoubleJump', ('AC', 3)})}}, 'standard-lure': {'ValleyMain': {frozenset({'HoruKey'})}}, 'expert-core': {'ValleyMain': {frozenset({'Grenade', 'Bash', 'ChargeJump'})}}, 'master-core': {'ValleyMain': {frozenset({'Bash'})}}, 'glitched': {'ValleyMain': {frozenset({'ChargeJump'})}}}} diff --git a/worlds_disabled/oribf/Types.py b/worlds_disabled/oribf/Types.py deleted file mode 100644 index 1ed2423a487b..000000000000 --- a/worlds_disabled/oribf/Types.py +++ /dev/null @@ -1,5 +0,0 @@ -from typing import NamedTuple - -class Location(NamedTuple): - code: int - vanilla_item: str \ No newline at end of file diff --git a/worlds_disabled/oribf/__init__.py b/worlds_disabled/oribf/__init__.py deleted file mode 100644 index 6400961a5a8c..000000000000 --- a/worlds_disabled/oribf/__init__.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import Set - -from worlds.AutoWorld import World -from .Items import item_table, default_pool -from .Locations import lookup_name_to_id -from .Rules import set_rules, location_rules -from .Regions import locations_by_region, connectors -from .Options import options -from BaseClasses import Region, Item, Location, Entrance, ItemClassification - - -class OriBlindForest(World): - game: str = "Ori and the Blind Forest" - - topology_present = True - data_version = 1 - - item_name_to_id = item_table - location_name_to_id = lookup_name_to_id - - option_definitions = options - - hidden = True - - def generate_early(self): - logic_sets = {"casual-core"} - for logic_set in location_rules: - if logic_set != "casual-core" and getattr(self.multiworld, logic_set.replace("-", "_")): - logic_sets.add(logic_set) - self.logic_sets = logic_sets - - set_rules = set_rules - - def create_region(self, name: str): - return Region(name, self.player, self.multiworld) - - def create_regions(self): - world = self.multiworld - menu = self.create_region("Menu") - world.regions.append(menu) - start = Entrance(self.player, "Start Game", menu) - menu.exits.append(start) - - # workaround for now, remove duplicate locations - already_placed_locations = set() - - for region_name, locations in locations_by_region.items(): - locations -= already_placed_locations - already_placed_locations |= locations - region = self.create_region(region_name) - if region_name == "SunkenGladesRunaway": # starting point - start.connect(region) - region.locations = {Location(self.player, location, lookup_name_to_id[location], region) - for location in locations} - world.regions.append(region) - - for region_name, exits in connectors.items(): - parent = world.get_region(region_name, self.player) - for exit in exits: - connection = Entrance(self.player, exit, parent) - connection.connect(world.get_region(exit, self.player)) - parent.exits.append(connection) - - def generate_basic(self): - for item_name, count in default_pool.items(): - self.multiworld.itempool.extend([self.create_item(item_name) for _ in range(count)]) - - def create_item(self, name: str) -> Item: - return Item(name, - ItemClassification.progression if not name.startswith("EX") else ItemClassification.filler, - item_table[name], self.player)